我上传图像设备的本地存储(安卓),任务成功做,我现在面临的问题,当我尝试读取从本地存储的文件,它会弹出错误说:
invariation违反对象是无效的孩子作出反应
这里是我的代码上传的图片:
let dirs = RNFetchBlob.fs.dirs;
RNFetchBlob.fs.exists(dirs.PictureDir + "/myfolder")
.then((exist) => {
//console.log(`file ${exist ? '' : 'not'} exists`);
if (!exist) {
try {
const fs = RNFetchBlob.fs;
/
RNFetchBlob.fs.mkdir(dirs.PictureDir + "/myfolder")
.then(() => {
let base64Str = data;
fs.writeFile(dirs.PictureDir + "/myfolder/" + imageName, base64Str, 'base64')
.then(() => {
RNFetchBlob.fs.scanFile([{
path: dirs.PictureDir + "/myfolder/",
mime: 'jpeg/jpg'
}]);
}).catch(() => {
alert("error");
})
这里是通向我的形象
常量路径= dirs.PictureDir + “/ MyFolder文件/ 1718179779c718ba84098b90f6061816fba9f.jpg”
在这里,我的代码访问图像,你可以请帮忙
<ScrollView keyboardShouldPersistTaps="handled">
<View style={styles.containerWithMargin} >
{RNFetchBlob.fs.readFile(path, 'base64') .then( (data) =>
<Avatar
medium
onPress={this.onSelectPostImage.bind(this)}
source={{uri : data}}
/>
)}
</View>
RNFetchBlob.fs.readFile
返回一个承诺,什么异步应在ComponentDidMount
并从那里你可以使用setState
设置imageUrl
例如,那么在JSX你就会有这样的事情
<View style={styles.containerWithMargin} >
{imageUrl &&
<Avatar
medium
onPress={this.onSelectPostImage.bind(this)}
source={{uri : imageUrl}}
/>
}
</View