保存到图库的图像仅在 phone 重新启动时显示 - React-Native Android
Saved images to Gallery only display when phone is restarted - React-Native Android
我正在使用 File System API from the react-native-fetch-blob 库。
我从服务器请求一个图像,接收一个 base64,然后我将它保存到 android fs 中的 Pictures 目录。
我这样保存图片:
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 模拟器时,它就会出现在图库中。
问题
如何在不重新启动模拟器的情况下查看 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)
图库从媒体数据库中获取内容。媒体扫描器分析文件系统并相应地更新媒体数据库。 mediascanner 可能需要一些时间才能找到您的新图片。
- 您可以要求媒体扫描器分析您刚刚保存图像的目录,如 how to run media scanner in android
中所述
- 或者您可以按照
中的说明自行将图像添加到 mediadb
我正在使用 File System API from the react-native-fetch-blob 库。
我从服务器请求一个图像,接收一个 base64,然后我将它保存到 android fs 中的 Pictures 目录。
我这样保存图片:
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 模拟器时,它就会出现在图库中。
问题
如何在不重新启动模拟器的情况下查看 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 确实为此
提供了 APIfs.scanFile(path_of_the_file)
图库从媒体数据库中获取内容。媒体扫描器分析文件系统并相应地更新媒体数据库。 mediascanner 可能需要一些时间才能找到您的新图片。
- 您可以要求媒体扫描器分析您刚刚保存图像的目录,如 how to run media scanner in android 中所述
- 或者您可以按照