我试图使用带有jQuery的ajax()
函数的php在服务器上上传文件。下面是我正在尝试的代码。当我在没有jQuery的情况下在同一页上编写PHP代码时,一切工作正常,因此毫无疑问文件上传正常。
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.";
}
}
如果您需要其他任何信息,请在下面评论。
答案 0 :(得分:2)
您正在检查if(isset($_POST["submit"]))
,但尚未设置。
不仅仅是这个:
var fd = new FormData();
使用此按钮可拉入任何非文件输入值(例如,提交按钮)。
var fd = new FormData(this);