Как установить заголовки для загрузки файла с помощью React Native и react-native-fs?

Чтобы загрузить актив, необходимо установить заголовок авторизации при использовании react-native-fs с помощью React Native.

В соответствии с документацией заголовок устанавливается как таковой:

  const options = {
    headers: {
      Authorization: `Bearer ${accessToken}`,
    },
    fromUrl: url,
    toFile: path,
  };

  // const permission = await insurePermissions();

  const task = RNFS.downloadFile(options);

Он отлично работает в iOS, однако Android, используя эмулятор под управлением Android 6, 8, 9 или 10, заголовок не отправляется, поэтому вместо этого сервер возвращает другой актив с ошибкой, потому что пользователь не проходит аутентификацию.

Как устанавливается заголовок аутентификации в Android с помощью react-native-fs?


person Adam S    schedule 03.11.2019    source источник


Ответы (1)


Эта проблема согласуется с другими библиотеками файловой системы React Native. Вместо этого я использовал Axios для загрузки файла и сохранения с помощью RNFS.

const fetchFile = async (accessToken, id) => {
  const dir = await getDirectory();
  await flushFileProofs();
  const baseUrl = 'https://example.com';
  const url = `${baseUrl}/images/${id}/download`;
  const fileName = `${id}-file.png`;
  const path = `${dir}/${fileName}`;

  const data = await axios.request({
    method: 'GET',
    url,
    headers: {
      Accept: '*/*',
      Authorization: `Bearer ${accessToken}`,
    },
    responseType: 'arraybuffer',
  })
    .then(response => Buffer.from(response.data, 'binary').toString('base64'));

  await RNFS.writeFile(path, data, 'base64');
  FileViewer.open(path);
};
person Adam S    schedule 12.11.2019