我希望能够使用 AJAX 上传文件。
我尝试过使用(JavaScript):
$("input[type='file']").change(function(){
var file = document.getElementById("uploadelement").files[0];
$.ajax({
url: "upload.php",
type: "POST",
beforeSend: function(xhr){
xhr.setRequestHeader("X_FILENAME", file.name);
},
success: function(data){
console.log(data);
}
});
});
使用(PHP):
<?php
$fn = (isset($_SERVER['HTTP_X_FILENAME']) ? $_SERVER['HTTP_X_FILENAME'] : false);
if ($fn) {
// AJAX call
file_put_contents(
'uploads/' . $fn,
file_get_contents('php://input')
);
echo "$fn uploaded";
exit();
}
?>
但是,我遇到了问题,文件内容未显示。我不确定出了什么问题。我在 tutorial 上找到了这段代码所以我认为它应该可以工作。
文件已上传到文件夹,但没有内容。
最佳答案
我不知道 jQuery $.ajax()
调用,但这可以通过使用 XMLHttpRequest
来实现,如下所示:
var file = document.getElementById("uploadelement").files[0];
var form_data = new FormData();
form_data.append("userfile", file);
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "upload.php");
xmlhttp.send(form_data);
然后在您的 PHP 上传处理程序中(此处为 upload.php):
move_uploaded_file($_FILES["userfile"]["tmp_name"], "path/to/uploads/" . $_FILES["userfile"]["name"]);
然后文件应该已经保存到所需的目录中。
关于php - 通过AJAX上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16049685/