загрузить изображение с экспозиции камеры на сервер - PullRequest
0 голосов
/ 25 сентября 2019

Я использую выставочную камеру, чтобы сделать снимок.Вывод, который я получаю, - это файл в формате 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",                                                                                              
                  },                                                                                                                    
               ],                                                                                                                    
            ],                                                                                                                    
}   

Как я использую почтальон для проверки моего контроллера паруса 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 голосов
/ 26 сентября 2019

Проблема была в том, что я не указал имя файла.Просто сделал это, и это сработало !!!:)

    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); });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...