如何在react-native expo中将asset-library://转换为file://?

g6ll5ycj  于 2023-01-09  发布在  React
关注(0)|答案(1)|浏览(94)

我正在用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"。

llmtgqce

llmtgqce1#

我只需要文件名,所以我使用了let文件名= result.assets[0].uri.split('/')[result.assets[0].uri.split('/').length-1]
因此,如果asset-library和file://后面的路径相同,您可以使用该路径去掉asset-library://,然后将其替换为file://

let uri='file://' + object.uri.split('asset-library://')[1]

希望能有所帮助

相关问题