Как отправить документ из собственного ответа DocumentPicker на веб-API в виде байта []

Я использую форму средства выбора документа, выбирая файл с мобильного устройства Android, используя следующий код.

DocumentPicker.show({
  filetype: [DocumentPickerUtil.images()],
},(error,res) => {
  // Android
  console.log(
     res.uri,
     res.type, // mime type
     res.fileName,
     res.fileSize
  );
});

и вывод приведенного выше журнала похож на

uri: 'content://com.android.providers.media.documents/document/image%3A48',
type: 'image/jpeg'
fileName: 'TestImage.jpeg'
fileSize: 5301

Как мне получить массив байтов загруженного файла в режиме реагирования и отправить его в качестве входных данных для почтового запроса веб-API.


person Gowthaman    schedule 07.10.2018    source источник


Ответы (1)


Это работает для меня

    DocumentPicker.show({
      filetype: [DocumentPickerUtil.images()],
    },(error,res) => {
 
  
        const data = new FormData();
        data.append('name', 'testName'); // you can append anyone.
        data.append('photo', {
          uri: res.uri,
          type: res.type,
          name: res.fileName,
        });

        fetch('http://ApiUrl/api/Controller/UploadFile', {
          method: 'post',
          headers: {
            'Content-Type': 'multipart/form-data',
          },
          body: data
        }).then(res => {
          console.log(res)
        })
        .catch(function(error) {
          console.log('There has been a problem with your fetch operation: ' + error.message);
            throw error;
          });
});

person Gowthaman    schedule 26.10.2018
comment
Как я могу выбрать файл песни? - person Oliver D; 17.02.2020
comment
будет то же самое, укажите правильный формат и имя файла - person Gowthaman; 27.02.2020
comment
Вам не нужно устанавливать заголовок Content-Type вручную. github.com/github/fetch/issues/505#issuecomment-293064470 - person King Julien; 14.03.2021