将博览会相机胶卷图像上传到服务器

时间:2019-09-25 19:19:54

标签: react-native expo

我正在使用世博相机拍照。我得到的输出是格式为file:///data/user/0/host.exp.exponent/..../Camera/1075d7ef-f88b-4252-ad64-e73238599e94.jpg

的文件

我将此文件路径发送到以下操作,并尝试将其上传到

export const uploadUserPhoto = (localUri,uid) => async dispatch => {
    let formData = new FormData();
    formData.append('avatar', { uri: localUri, fileName: uid});

    let res = await fetch(`${API_URL}api/uploadPhoto`, {
      method: 'POST',
      body: formData,
      header: {
        'content-type': 'multipart/form-data',
      },
    });

此后,我得到[Unhandled promise rejection: TypeError: Network request failed],但没有任何信息到达服务器。我尝试使用一些字符串来发送正文,并且提取成功,所以我想它与formData配置有关。

formData是:

{                                                                                                       
   "_parts": Array [                                                                                                         
            Array [                                                                                                                   
               "avatar",                                                                                                               
                  Object {                                                                                                                  
                  "fileName": "6eAntcmoEsdBeSD2zfka9Nx9UHJ3",                                                                             
                  "type": "jpg",                                                                                                          
                   "uri": "file:///data/us....2e6e3e8d3223.jpg",                                                                                              
                  },                                                                                                                    
               ],                                                                                                                    
            ],                                                                                                                    
}   

我如何使用邮递员测试我的Sails Controller enter image description here

风帆控制器功能:

uploadPhoto: function (req, res) {
    req.file('avatar').upload({
      adapter: require('skipper-s3'),
      key: 'XXXX',
      secret: 'XXX',
      bucket: 'XXX',
      saveAs: req.param('fileName') + '.png',
    }, function (err, filesUploaded) {
            .... 
      });
    });
  }

1 个答案:

答案 0 :(得分:0)

问题是我没有指定文件名。 只是这样做,它起作用了!!! :)

    data.append('filename', 'avatar');
    data.append('fileName', uid);
    data.append('avatar', {
      uri: photo.uri,
      name: 'selfie.jpg',
      type: 'image/jpg'
    });

    const config = {
        method: 'POST',
        headers: {
          Accept: 'application/json',
          'Content-Type': 'multipart/form-data',
        },
        body: data
      };

  fetch(`${API_URL}api/uploadPhoto`, config).then(responseData => {
  console.log(responseData);
}).catch(err => { console.log(err); });