我正在用expo开发一个跨平台的应用程序,在我的应用程序中,我有一个屏幕,用户可以在那里选择要上传的图片或视频。
当我使用expo-image-picker
来选择图像时,它给了我一个URI以file:///
开头的对象,我可以使用这个URI来显示图像。
当我使用expo-image-picker-multiple
来选择多个图像时,它会给我对象,并且URI以asset-library://
开头,我无法使用此URI来显示它的内容,也无法将其发送到服务器。
如何将asset-library://
转换为file://
?当我在谷歌上搜索这个问题时,我应该使用哪个关键字来获得更好的结果,或者我应该使用哪个工具?我真的找不到一个合适的解决方案。这种情况发生在IOS设备上。
谢谢!
[编辑]
这是我代码
var assetUri = 'asset-library://....'
var tempDir = `${FileSystem.cacheDirectory}${Math.random().toString(36).substring(7)}.jpg`
FileSystem.copyAsync({
from: assetUri,
to: tempDir
})
try {
var assetResult = await FileSystem.readAsStringAsync(tempDir, {
encoding: FileSystem.EncodingType.UTF8
})
console.log(assetResult)
}
catch(e) {
console.log(e)
}
无法读取文件"文件:///var/mobile/containers/Data/Application/0E-FC42 - 4630-B3C7 - 537D5EFB7D1F/Library/缓存/指数经验数据/ichardexpohong/gwmke.jpg"。
1条答案
按热度按时间llmtgqce1#
我只需要文件名,所以我使用了let文件名= result.assets[0].uri.split('/')[result.assets[0].uri.split('/').length-1]
因此,如果asset-library和file://后面的路径相同,您可以使用该路径去掉asset-library://,然后将其替换为file://
希望能有所帮助