Как сохранить загрузку изображения с помощью PHP из Ajax-запроса - PullRequest
0 голосов
/ 22 мая 2018

Я использую 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(){}

Как сохранить загруженный файл / изображение на сервер?

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Я попробовал снова с $FILES['file']['tmp_name'], в котором я получил ошибки, с которыми я мог работать.

Я сделал это сейчас, изменив код на:

 public function SaveSlide(){
    if($_FILES['file']){
        echo json_encode($_POST['id'] . '<br>' . $_POST ['name'] . '<br>' . $_POST['caption'] . '<br>' . var_dump($_FILES ['file']));

        if($_FILES['file']['type'] === "image/jpeg") {
            $path = $_SERVER['DOCUMENT_ROOT'] . '/assets/img/' . $_FILES['file']['name'];
            if (move_uploaded_file($_FILES['file']['tmp_name'], $path)) {
                echo json_encode('Uploaded!');
            } else {
                echo json_encode('Not uploaded :(!');
            }
        }
        //$html = $this->slideController->EditSlide($data);
    }
}
0 голосов
/ 22 мая 2018

Вы установили разрешение на img папку?Установите 766

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...