我有一个非常简单的HTML页面,其中包含一个图片上传表单,如下所示:
<form id="file_data">
<input type='file' id='image_uploaded' accept='image'/>
<input type='submit' id="upload_image"/>
</form>
我的Javascript:
$(document).ready(function() {
$("form[id='file_data']").submit(function() {
var form_data = new FormData(this);
$.ajax({
url: "upload.php",
type: "POST",
data: form_data,
processData: false,
success: function(data) {
alert(data);
}
});
});
});
如果目录尚不存在, upload.php
正在创建存储图像的目录。然后应该将图像存储在目录中:
<?php
define("IMAGE_DIRECTORY", "images");
//If the directory for images does not exist, create it
if(!is_dir(IMAGE_DIRECTORY)) {
mkdir(IMAGE_DIRECTORY, 0777, true);
}
move_uploaded_file($_FILES["tmp_name"], IMAGE_DIRECTORY . "\\" .basename($_FILES["file"]["name"]));
?>
虽然PHP脚本将创建目录,但如果它尚不存在,则不会将任何图像保存到目录中。我假设我没有正确地从PHP访问图像,但是我看过的教程并没有解释当在Ajax调用PHP中发送图像时实际发生的事情的细节。 / p>
答案 0 :(得分:4)
代码中缺少问题:
Html :enctype="multipart/form-data"
form
上传文件,<input type="file"
号name="file"
Php :move_uploaded_file
不正确您错过了['file']
tmp_name $_FILES['file']["tmp_name"]
Ajax :dataType:"html"
丢失,因此您的ajax从服务器获取响应
更新 Html , Php 和 Ajax 代码,如下所示:
Html代码:
<form id="file_data" enctype="multipart/form-data" method="post">
<input type='file' name='file' id='image_uploaded' accept='image'/>
<input type='submit' id="upload_image"/>
</form>
Php代码:
<?php
define("IMAGE_DIRECTORY", "images");
//If the directory for images does not exist, create it
if(!is_dir(IMAGE_DIRECTORY)) {
mkdir(IMAGE_DIRECTORY, 0777, true);
}
move_uploaded_file($_FILES['file']["tmp_name"], IMAGE_DIRECTORY . "\\" .basename($_FILES["file"]["name"]));
?>
Ajax代码:
$.ajax({
url: "upload.php",
data : form_data,
type : "POST",
async: false,
cache: false,
contentType: false,
processData: false,
dateType : "html",
success: function(data) {
alert(data);
}
});