Файл пуст в Symfony после загрузки с помощью react-native-fetch-blob

Я хочу загрузить изображение с реактивного натива на сервер PHP Symfony. Я выбираю изображение с помощью ImagePicker.showImagePicker и отправляю его с помощью RNFetchBlob.fetch, но в Symfony файл кажется пустым. $file->getMimeType() возвращает «файл не существует или недоступен для чтения», а тип содержимого файла — поток октетов. Это должно быть изображение/jpeg.

Есть идеи ? Спасибо за помощь :)

PHP-код:

private function uploadFile(Request $request, $actualFilename = null)
{
        $file = $request->files->get('userfile');
        var_dump($file->getMimeType());
}

Реагировать-родной код:

const options = {
      title: 'Select Photo',
      takePhotoButtonTitle: "Take photo title",
      chooseFromLibraryButtonTitle: "Choose a photo",
      quality: 1
    };

    ImagePicker.showImagePicker(options, response => {
        deviceStorage.getItem('jwt').then(jwt => {

          const endpoint = 'someEndpoint'

          RNFetchBlob.fetch('POST', endpoint, {
            Authorization : "Bearer " + jwt,
            otherHeader : "foo",
            'Content-Type' : 'multipart/form-data',
          }, [
            { name : 'userfile', filename : 'image.jpg', type:'image/jpeg', data: response.data}
          ]).then((resp) => {
            console.log(resp);
          }).catch((err) => {
            console.log(err);
          });
        });
    });

person Nicolas Machut    schedule 27.09.2019    source источник


Ответы (1)


Вы передаете данные изображения, поэтому на сервере вы получаете base64, чтобы получить изображение, например:

private function uploadFile(Request $request, $actualFilename = null){
    $base64Image = $request->get('userfile');
    $data = base64_decode($base64Image);
    file_put_contents($imagePath, $data);
}

$imagePath — это место, где вы сохраняете изображение.

Если вы используете vichuploader для управления изображениями, посмотрите здесь base64- изображение в файл изображения с помощью symfony-и-vichuploader

person Daniel Piad Aldazabal    schedule 21.05.2020