我试图使用 php 和 jQuery 的 ajax()
函数在服务器上上传文件。下面是我正在尝试的代码。当我在同一页面上编写 PHP 代码而不使用 jQuery 时,一切正常,因此毫无疑问文件上传工作正常。
HTML
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(function() {
$("form").submit(function(e){
e.preventDefault();
var fd = new FormData();
fd.append("files", $("#fileinput").prop("files"));
$.ajax({
url: "imgupload_.php",
type:"POST",
processData: false,
contentType: false,
data: fd,
success: function(result){
alert(result);
}
});
});
});
</script>
<form method="POST" action="#" enctype="multipart/form-data">
<input type='file' name='files' id="fileinput"/>
<input type='submit' value='Submit' name='submit'/>
</form>
imgupload_.php
if(isset($_POST["submit"])) {
$target_dir = "images/";
$target_file = $target_dir . basename($_FILES["files"]["name"]);
if (move_uploaded_file($_FILES["files"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["files"]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
如果您需要任何其他信息,请在下面评论。
最佳答案
您正在检查 if(isset($_POST["submit"]))
但尚未设置。
不仅仅是这个:
var fd = new FormData();
使用它来提取任何非文件输入值(例如您的提交按钮。)
var fd = new FormData(this);
关于php - 无法使用 $ajax() 在 PHP 中上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58920220/