Загрузка нескольких файлов с помощью vue axios и PHP-загружается только один файл


Загрузка нескольких файлов с помощью vue axios и PHP-загружается только один файл

14.11.2020 09:38:49 Просмотров 78 Источник

Я пытаюсь создать множественную загрузку файлов с помощью vue и axios. Моя проблема заключается в том, что на сервер будет загружен только файл ine. Вот код, который я использую: Код шаблона

<input type="file" name="images[]" multiple ref="images" @change="handleUpload()">

Код JS

//this is part of the handleUpload() vue method.

let formData = new FormData();

for(let i;i < $refs.images.files.length; i++){
 let file = this.$refs.images.files[i];
 formData.append('image', file);
}

axios.post('/upload', formData, { header: { 'Content-Type': 'multipart/form-data' } })
.then( (response) => console.log(response, response.data) )
.catch( (error) => console.log(error) ); 

PHP серверный код

// I'm using slim 4 and sirius upload to manage the file validation/upload
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\UploadedFileInterface;
use Slim\Factory\AppFactory;
use Sirius\Upload\Handler as UploadHandler;

require __DIR__ . '/vendor/autoload.php';

$app = AppFactory::create();

$app->post('/platform/api/v1/compress', function(Request $request, Response $response){

    $uploadHandler = new UploadHandler('/uploads');
    
        $uploadHandler->addRule('extension', ['allowed' => ['jpg', 'jpeg', 'png']]);
   
        $result = $uploadHandler->process( $request->getUploadedFiles() );
        
        // handle single input with single file upload
        if( $result->isValid() ){
            $result->confirm();
                   
            $url = ["master_image_url" => "/uploads/".$result->name];

            $response->getBody()->write(json_encode($url));
        }


    return $response;
});

$app->run();

Как я могу загрузить несколько файлов?Может быть, мне нужно изменить код?

У вопроса есть решение - Посмотреть?

Ответы - Загрузка нескольких файлов с помощью vue axios и PHP-загружается только один файл / Multiple files upload with vue axios and PHP - only one file is uploaded

Является ответом!
jcHernande2

14.11.2020 09:44:57

попробуйте изменить "image "На" image [] " в функции appened

Пример:

for(let i;i < $refs.images.files.length; i++){
 let file = this.$refs.images.files[i];
 formData.append('image[]', file);
}

в серверах

$uploadedFiles=$request->getUploadedFiles();
foreach ($uploadedFiles['image'] as $uploadedFile) {
        if ($uploadedFile->getError() === UPLOAD_ERR_OK) {
           
        }
    }
Помочь в развитии проекта:
Закрыть X