我正在尝试使用此特定代码段下载小图像:
已使用的插件:“ rn-fetch-blob”:“ ^ 0.10.14”
RNFetchBlob.
config({
fileCache: true,
}).
fetch('GET', url, { //getting image URL from server
// some headers ..
})
.then((response) => {
const base64Str = response.data;
RNFetchBlob.fs
.writeFile(imageLocation, base64Str, 'base64')
.then(() => {
console.log("Download successful");
}).catch((err) => {
console.log('Failed to save file. ', err);
});
可变imageLocation指向${RNFetchBlob.fs.dirs.DocumentDir}/${filename}
。
也尝试过${RNFetchBlob.fs.dirs.CacheDir}/${filename}
。
下载成功,但设备照片中没有图像。
答案 0 :(得分:1)
在iOS上,文档和缓存目录都包含在应用程序自己的目录中。因此,您不会将图像存储在设备照片中。
要将其下载到设备照片,您需要使用本机https://facebook.github.io/react-native/docs/cameraroll的CameraRoll
import { CameraRoll } from 'react-native';
本教程向您展示如何使用CameraRoll
https://medium.com/react-native-training/mastering-the-camera-roll-in-react-native-13b3b1963a2d
然而,关键是您可以使用类似的方式将图像下载到相机胶卷中
saveToCameraRoll = (image) => {
if (Platform.OS === 'android') {
RNFetchBlob
.config({
fileCache : true,
appendExt : 'jpg'
})
.fetch('GET', image.urls.small)
.then((res) => {
CameraRoll.saveToCameraRoll(res.path())
.then(Alert.alert('Success', 'Photo added to camera roll!'))
.catch(err => console.log('err:', err))
})
} else {
CameraRoll.saveToCameraRoll(image.urls.small)
.then(Alert.alert('Success', 'Photo added to camera roll!'))
}
}
答案 1 :(得分:0)
您想要做的是将 base64 编码的图像写入文件,但您写入的只是图像 url。