因此,当我选择使用ajax上传图片时,我正在尝试将图片数据发送到php。
我尝试将数据发送到不带ajax的php,它似乎可以正常工作,并且我能够对文件数据进行处理。但是,因为我不希望PHP重新加载到其他页面,所以我想使用Ajax。
所以我得出的结论是ajax调用或formdata出了问题。
我不知道为什么它不起作用。
任何建议
jQuery:
$( document ).on('click','#upload_img_btn', function(){
$('#choose_img').click();
form_data = new FormData();
$("#choose_img").change(function(){
var selected_img = this.files[0];
form_data.append("#choose_img", selected_img);
$.ajax({
url: $("#img_uploader").attr("action"),
type: 'POST',
data: form_data,
processData: false,
contentType: false,
success: function(validation){
if (validation == "success") {
readURL(this);
} else {
alert(validation);
}
}
});
});
});
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
var img_preview = '<img id="preview" src="'+ e.target.result +'" />' +
'<input class="btn" type="submit" value="Post" name="submit" id="post_img">'
$('.rounded_box').replaceWith(img_preview);
}
reader.readAsDataURL(input.files[0]);
}
}
PHP
<?php
echo $_FILES['choose_img']['name'];
?>
答案 0 :(得分:0)
在您的JS中,您实际上从未真正将文件发送到服务器并获得输出。您正在执行客户端上的所有逻辑,而从未执行验证。
如果要在提交表单之前验证文件 ,则有两个选择:
服务器端:您需要对图像进行ajax请求,并从服务器获取输出并显示(可能使用alert
)
客户端:您可以在JS代码中检查文件是否为图片