Я использую 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(){}
Как сохранить загруженный файл / изображение на сервер?