是否可以将图片保存到android的本地文件系统中,以便从手机的“Gallery”和文件夹中查看??
我找到了这个react-native-fs库,但在研究了文档并完成了一个示例之后,我仍然不确定它是否可行。
谢谢
发布于 2016-08-09 20:09:18
对于任何有同样问题的人,这里有解决方案。
解决方案
我使用的是react-native-fetch-blob库中的File System API。这是因为我认为它比'react-native-fs‘库有更好的文档记录,也更容易理解。
我从服务器请求一张图片,收到一张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!!")
RNFetchBlob.fs.scanFile([ { path : imageLocation, mime : mimetype_attachment } ])
.then(() => {
console.log("scan file success")
})
.catch((err) => {
console.log("scan file error")
})
}).catch((error) => {
// error handling
console.log("Error:", error)
});
},上述方法中的以下代码刷新图库,否则图像将不会显示,直到手机关机并重新打开。
RNFetchBlob.fs.scanFile([ { path : imageLocation, mime : mimetype_attachment } ])
.then(() => {
console.log("scan file success")
})
.catch((err) => {
console.log("scan file error")
})享受吧!
发布于 2016-07-22 18:04:56
你完全可以用react-native-fs做到这一点。有一个PicturesDirectoryPath常量,在项目的自述文件中没有提到;如果您将文件保存到其中,它应该会出现在Gallery应用程序中。如果你希望它出现在你自己的相册中,只需在该文件夹中创建一个新目录,并将文件保存到其中,例如
const myAlbumPath = RNFS.PicturesDirectoryPath + '/My Album'
RNFS.mkdir(myAlbumPath)
.then(/* write/copy/download your image file into myAlbumPath here */)对不起,我不再有完整的示例代码,因为我结束了在我的应用程序的私有缓存目录中存储图像。无论如何,希望这能有所帮助!
https://stackoverflow.com/questions/38521363
复制相似问题