我有一个允许用户选择图像的站点。我希望将此图像上传到我的数据库。我正在使用php上传和使用Ajax函数来传递图像。但是,当我从数据库中打开图像时,看起来该图像实际上并没有作为图像传递,而是作为.bin传递。这是我的Ajax函数
<script>
function AddItem(){
var name = document.forms["additemform"]["nc_name"].value;
var tag = document.forms["additemform"]["nc_tag"].value;
var description = document.forms["additemform"["nc_description"].value;
var image = document.forms["additemform"]["nc_image"].value;
var isValid = false;
$.ajax({
type: "POST",
url: "/AddNewItem.php",
data: { "Item_Name": name, "Item_Tag": tag, "Item_Description": description, "Item_Image": image },
dataType: "json",
success: function(resp){
console.log(resp);
if(resp.reply == "Success")
{
isValid = true;
form.submit();
}
else
{
isValid = false;
}
},
error: function(data, status){
console.log(data, status);
alert("error")
}
}); //end Ajax
console.log(isValid);
return isValid;
};
</script>
在我的AddNewItem.php文件中,我正在抓取这样的图像:
$itemimage = base64_encode($_POST["Item_Image"]);
在此之后,我只需上载到数据库。上载正常,但看来我上载的格式错误。我究竟做错了什么。我需要确保它是jpeg上载文件,但它以.bin格式上载。
答案 0 :(得分:0)
您可以使用 FormData 示例
$('#add_form').submit(function (e) {
e.preventDefault();
var name_ar = $('#form_name_ar').val();
var name_en = $('#form_name_en').val();
var token = $('#form_token').val();
var formData = new FormData($('#add_form')[0]);
formData.append('file', $('input[name=form_file]')[0].files[0]);
formData.append('name_ar', name_ar);
formData.append('name_en', name_en);
formData.append('_token', token);
$.ajax({
url: add_url,
method: 'post',
data: formData,
contentType: false,
processData: false,
success: function (data) {
toastr.success(data);
$('#users-table').DataTable().ajax.reload();
$('#form_name_ar').val('');
$('#form_name_en').val('');
$("html, body").animate({
scrollTop: 0
}, 1000);
},
error: function(data){
toastr.error(data.responseJSON)
}
})
});