0

我正在使用react-native-fetch-blob库中的文件系统 API 。

我从服务器请求图像,接收 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。

4

2 回答 2

3

在 Android 中,要使图像在图库中可见,您需要对该文件使用“媒体扫描仪”。react-native-fetch-blob 确实为此提供了一个 API

fs.scanFile(path_of_the_file)

文档

于 2016-08-09T10:47:54.210 回答
1

画廊从媒体数据库中获取它的内容。媒体扫描器分析文件系统并相应地更新媒体数据库。mediascanner 可能需要一些时间才能找到您的新图像。

于 2016-08-09T10:50:10.017 回答