使用react-native-fetch-blob上传后,文件在Symfony中为空

时间:2019-09-27 18:02:57

标签: symfony react-native react-native-fetch-blob react-native-image-picker

我想将图片从react-native上传到PHP Symphony服务器。我使用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);
          });
        });
    });

1 个答案:

答案 0 :(得分:0)

您已经传递了图像数据,因此在服务器中获得base64,以检索图像,例如:

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

$ imagePath是保存图像的位置。

如果您使用vichuploader管理图像,请在这里base64-image-to-image-file-with-symfony-and-vichuploader