Ошибка загрузки диспетчера загрузок файл не загружен в место назначения - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь загрузить изображение, поступающее из API. Я использую пакет rn-fetch-blob для загрузки файла. Но проблема здесь в том, что когда я нажимаю на файл загрузки, он загружается, но появляется некоторая ошибка:

Ошибка загрузки диспетчера загрузки, файл не загружается в место назначения

Любая помощь была бы замечательной.

Вот как я реализовал rn-fetch-blob в своем коде

  const checkPermission = async (image: string) => {
    if (Platform.OS === 'android') {
      try {
        const granted = await PermissionsAndroid.request(
          PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,
          {
            title: 'Storage Permission Required',
            message: 'This app needs access to your storage to download Photos',
            buttonPositive: 'OK',
          },
        );
        if (granted === PermissionsAndroid.RESULTS.GRANTED) {
          console.log('Storage Permission Granted.');
          handleDownload(image);
        } else {
          Alert.alert('Storage Permission Not Granted');
        }
      } catch (err) {
        console.warn(err);
      }
    }
  };
  const getExtention = (filename: string) => {
    //To get the file extension
    return /[.]/.exec(filename) ? /[^.]+$/.exec(filename) : undefined;
  };

  // eslint-disable-next-line @typescript-eslint/no-unused-vars
  const handleDownload = async (image: string) => {
    let date = new Date();
    let image_url = image;

    let ext = getExtention(image_url);
    const {config, fs} = RNFetchBlob;
    let pictureDir = fs.dirs.PictureDir;
    let options = {
      fileCache: true,
      addAndroidDownloads: {
        useDownloadManager: true,
        notification: true,
        path:
          pictureDir +
          '/wallace_' +
          Math.floor(date.getTime() + date.getSeconds() / 2) +
          '.' +
          ext,
        description: 'Image',
      },
    };
    config(options)
      .fetch('GET', image_url)
      .then((res) => {
        console.log(res.path());
        Alert.alert('Image Downloaded Successfully.');
      })
      .catch((err) => {
        Alert.alert('Download Failed', err.message);
      });
  };
return <View>
              <TouchableWithoutFeedback
                onPress={() => handleShare(src.portrait)}>
                <Text variant="buttonText">Share Image</Text>
              </TouchableWithoutFeedback>
            </View>
...