RN 提取 blob 下载 images/files 更新应用程序后未显示
RN fetch blob downloaded images/files not showing after update the app
我正在使用 rn-fetch-blob 包下载缓存中的图像。我已经展示了图像。
如果我将应用程序更新到新版本,则下载的图像不会显示在 IOS 中。
有什么解决办法吗?
收到此错误 (https://github.com/joltup/rn-fetch-blob/issues/204)
提前致谢。
问题已解决,我的代码是,
从 'react';
导入 React, { useState, useEffect }
从 'react-native-fs' 导入 * 作为 RNFS;
// 导入所需组件
进口 {
样式表,
文本,
看法,
可触摸的不透明度,
权限Android,
图片,
平台,
} 来自 'react-native';
从“@react-native-async-storage/async-storage”导入 AsyncStorage;
const 设置 = () => {
const [LocalImage, setLocalImage] = useState('')
const image_URL =
'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQZ6QSUYDRBRChIXGs0jqH55cZytOPPjjh4Bg&usqp=CAU'
const renderImagePath = async () => {
let initialImage = await AsyncStorage.getItem('localImage')
if (initialImage == null) {
const extension = (Platform.OS === 'android') ? 'file://' : ''
const path = `${extension}${RNFS.DocumentDirectoryPath}/localImg.png`; //U can use any format png, jpeg, jpg
RNFS.exists(path).then(exists => {
RNFS.downloadFile({ fromUrl: image_URL, toFile: path }).promise.then(res => {
setLocalImage(`${RNFS.DocumentDirectoryPath}/localImg.png`)
AsyncStorage.setItem('localImage', 'localImg.png')
})
}).catch(error => {
console.warn(error);
});
}
else {
console.log('file exists', initialImage)
setLocalImage(`${RNFS.DocumentDirectoryPath}/${initialImage}`)
}
}
console.log('LocalImage', LocalImage)
return (
<View style={styles.container}>
<View style={{ alignItems: 'center' }}>
<Text style={{ fontSize: 30, textAlign: 'center' }}>
React Native Image Download Example
</Text>
<Text
style={{
fontSize: 25,
marginTop: 20,
marginBottom: 30,
textAlign: 'center',
}}>
www.aboutreact.com
</Text>
</View>
{LocalImage ?
<Image
source={{
uri: `file://${LocalImage}`
}}
style={{
width: '100%',
height: 100,
resizeMode: 'contain',
margin: 5
}}
/>
: null}
<TouchableOpacity
style={styles.button}
onPress={renderImagePath}>
<Text style={styles.text}>
Download Image
</Text>
</TouchableOpacity>
</View>
);
};
导出默认设置;
const 样式 = StyleSheet.create({
容器: {
弹性:1,
justifyContent: 'center',
对齐项目:'center',
背景颜色:'#F5FCFF',
},
按钮: {
宽度:'80%',
填充:10,
背景颜色:'orange',
保证金:10,
},
文本: {
颜色:'#fff',
字体大小:20,
textAlign: 'center',
填充:5,
},
});
我正在使用 rn-fetch-blob 包下载缓存中的图像。我已经展示了图像。 如果我将应用程序更新到新版本,则下载的图像不会显示在 IOS 中。 有什么解决办法吗? 收到此错误 (https://github.com/joltup/rn-fetch-blob/issues/204)
提前致谢。
问题已解决,我的代码是,
从 'react';
导入 React, { useState, useEffect }从 'react-native-fs' 导入 * 作为 RNFS;
// 导入所需组件 进口 { 样式表, 文本, 看法, 可触摸的不透明度, 权限Android, 图片, 平台, } 来自 'react-native';
从“@react-native-async-storage/async-storage”导入 AsyncStorage;
const 设置 = () => { const [LocalImage, setLocalImage] = useState('')
const image_URL =
'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQZ6QSUYDRBRChIXGs0jqH55cZytOPPjjh4Bg&usqp=CAU'
const renderImagePath = async () => {
let initialImage = await AsyncStorage.getItem('localImage')
if (initialImage == null) {
const extension = (Platform.OS === 'android') ? 'file://' : ''
const path = `${extension}${RNFS.DocumentDirectoryPath}/localImg.png`; //U can use any format png, jpeg, jpg
RNFS.exists(path).then(exists => {
RNFS.downloadFile({ fromUrl: image_URL, toFile: path }).promise.then(res => {
setLocalImage(`${RNFS.DocumentDirectoryPath}/localImg.png`)
AsyncStorage.setItem('localImage', 'localImg.png')
})
}).catch(error => {
console.warn(error);
});
}
else {
console.log('file exists', initialImage)
setLocalImage(`${RNFS.DocumentDirectoryPath}/${initialImage}`)
}
}
console.log('LocalImage', LocalImage)
return (
<View style={styles.container}>
<View style={{ alignItems: 'center' }}>
<Text style={{ fontSize: 30, textAlign: 'center' }}>
React Native Image Download Example
</Text>
<Text
style={{
fontSize: 25,
marginTop: 20,
marginBottom: 30,
textAlign: 'center',
}}>
www.aboutreact.com
</Text>
</View>
{LocalImage ?
<Image
source={{
uri: `file://${LocalImage}`
}}
style={{
width: '100%',
height: 100,
resizeMode: 'contain',
margin: 5
}}
/>
: null}
<TouchableOpacity
style={styles.button}
onPress={renderImagePath}>
<Text style={styles.text}>
Download Image
</Text>
</TouchableOpacity>
</View>
);
};
导出默认设置;
const 样式 = StyleSheet.create({ 容器: { 弹性:1, justifyContent: 'center', 对齐项目:'center', 背景颜色:'#F5FCFF', }, 按钮: { 宽度:'80%', 填充:10, 背景颜色:'orange', 保证金:10, }, 文本: { 颜色:'#fff', 字体大小:20, textAlign: 'center', 填充:5, }, });