Как установить заголовки, загружающие файл, используя React Native иact-native-fs? - PullRequest
0 голосов
/ 04 ноября 2019

Для загрузки ресурса необходимо установить заголовок авторизации при использовании act-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, заголовок не отправляется, поэтому сервер вместо этого возвращает другой актив с ошибкой, посколькупользователь не проходит проверку подлинности.

Как установить заголовок Authentication в Android с response-native-fs?

1 Ответ

0 голосов
/ 13 ноября 2019

Эта проблема совместима с другими библиотеками файловой системы 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);
};
...