【发布时间】:2018-05-22 09:08:42
【问题描述】:
我使用promosis 结合JS Formdata 和AJAX 将文件发送到服务器。但是我在存储它时遇到了问题。由于move_uploaded_file() 使用数组失败,并且使用文件名不会导致错误但仍然失败。
AjaxCall:
let fd = new FormData();
fd.append('id', id);
fd.append('name', name);
fd.append('caption', caption);
if( upload.cachedFileArray[0] !== null || typeof upload.cachedFileArray !== "undefined"){
alert('defined...');
alert(upload.cachedFileArray[0]);
fd.append('file', upload.cachedFileArray[0]);
} else {
alert(upload.cachedFileArray[0]);
alert('U heeft nog geen afbeelding toegevoegd!');
}
$.ajax({
url: '/SaveSlide',
type: 'POST',
processData: false,
contentType: false,
beforeSend: function (xhr) {
const token = jQuery('meta[name="csrf_token"]').attr('content');
if (token) {
return xhr.setRequestHeader('X-CSRF-TOKEN', token);
}
},
data: fd,
success: function (data) {
alert(data);
}
});
PHP:
public function SaveSlide(){
if($_FILES['file']){
//echo json_encode($_POST['id'] . $_POST ['name'] .$_POST['caption'] . var_dump($_FILES ['file']));
if($_FILES['file']['type'] === "image/jpeg") {
if (move_uploaded_file($_FILES['file'], asset('assets/img/'))) {
echo json_encode('Uploaded!');
} else {
echo json_encode('Not uploaded :(!');
}
}
//$html = $this->slideController->EditSlide($data);
}
}
AJAX 调用确实会发送数据,因为我可以回显对象数组并显示它。
数组的结构如下:
name:lastmodified:lastmodifieddate:WebkitRelativePath:size:type:slice: function(){}
如何将上传的文件/图像存储到服务器?
【问题讨论】:
标签: javascript php jquery ajax file-upload