我想在加载URL后保存图像,然后将它们保存在文档或TMP文件夹等某个位置,并在离线模式下以使用保存的图像。
我已经尝试了react-native-fs
,但没有成功,它会出现错误。
您可以通过将图像转换为base64来保存来自URL的图像。之后,您可以对图像进行任何操作,例如重建/编写字节到真实图像。
让我们尝试一下。
import RNFetchBlob from 'rn-fetch-blob'
import Share from 'react-native-share'
import RNFS from 'react-native-fs'
import {Alert, Platform} from 'react-native'
const download = (url) => {
let dirs = RNFetchBlob.fs.dirs
try {
if (Platform.OS === 'android') {
const configOptions = { fileCache: true }
RNFetchBlob.config(configOptions)
.fetch('GET', url, {
'Authorization': '', //yourTokenIfHave
'Content-Type': '' // 'application/octet-stream'
})
.then(resp => {
return resp.readFile('base64')
})
.then(async base64Data => {
base64Data = `data:application/pdf;base64,` + base64Data
await Share.open({ url: base64Data })
// remove the image or pdf from device's storage
await RNFS.unlink(filePath)
})
} else {
RNFetchBlob
.config({
fileCache: true,
path: dirs.DocumentDir + `/${itemPDF.fileName}`
})
.fetch('GET', url, {
'Authorization': '',
'Content-Type': '' // 'application/octet-stream'
})
.then(async (res) => {
// the temp file path
if (res && res.path()) {
const filePath = res.path()
let options = {
type: 'application/pdf',
url: filePath
}
await Share.open(options)
await RNFS.unlink(filePath)
}
})
.catch((error) => {
console.log(error)
})
}
} catch (error) {
console.log('download: ', error)
}
}