Я пытаюсь загрузить изображение, поступающее из 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>