我使用的是react-native-fetch-blob库中的文件系统API。
我从服务器请求一个图像,接收一个base64,然后我把它保存到android fs的图片目录。
我保存图像如下:
var RNFetchBlob = require('react-native-fetch-blob').default;
const PictureDir = RNFetchBlob.fs.dirs.PictureDir;
getImageAttachment: function(uri_attachment, filename_attachment, mimetype_attachment) {
return new Promise((RESOLVE, REJECT) => {
// Fetch attachment
RNFetchBlob.fetch('GET', config.apiRoot+'/app/'+uri_attachment)
.then((response) => {
let base64Str = response.data;
let imageLocation = PictureDir+'/'+filename_attachment;
//Save image
fs.writeFile(imageLocation, base64Str, 'base64');
console.log("FILE CREATED!!")
}).catch((error) => {
// error handling
console.log("Error:", error)
});
},
图像保存成功,但当我打开机器人的画廊是不可见的。但是当我关闭并打开Android模拟器时,它就会在图库中可见。
我如何在Android的图库中查看图像而无需重新启动模拟器?
<标题> 解决方案
我在文件创建后将此添加到上述方法中:
RNFetchBlob.fs.scanFile([ { path : imageLocation, mime : mimetype_attachment } ])
.then(() => {
console.log("scan file success")
})
.catch((err) => {
console.log("scan file error")
})
谢谢你@Xeijp
标题>在Android中,要使图像在图库中可见,您需要在该文件上使用'media scanner'。react-native-fetch-blob确实为此提供了一个API
fs.scanFile(path_of_the_file)
文档图库从媒体数据库中获取其内容。媒体扫描程序分析文件系统并相应地更新媒体数据库。可能需要一些时间,直到媒体扫描程序找到您的新图像。
- 你可以要求媒体扫描器分析你刚刚保存图像的目录,如如何在android 中运行媒体扫描器所述。
- 或者您可以按照https://stackoverflow.com/a/38383848/519334 中的说明自行将图像添加到媒体中。