rcp上传的时候如果是相册里面图片路径怎么上传,直接上传uri会失败

用rcp上传相册里面图片的uri(比如file://media/Photo/32/IMG_1715249229_031/IMG_031.jpg),然后当成文件参数contentOrPath直接是上传失败的。

错误code:1007900026

message:"Failed to open/read local data from file/application"

这种只能读取成arraybuffer?去上传?

我用下面方法读ArrayBuffer上传的时候,这种路径也是直接崩溃,读取不了

const readFileNew = (filepath: string): ArrayBuffer => { 
  let readFd = fileIo.openSync(filepath, fileIo.OpenMode.READ_ONLY) 
  let stream = fileIo.fdopenStreamSync(readFd.fd, "r") 
  try { 
    let state = fileIo.statSync(filepath); 
    let buf = new ArrayBuffer(state.size) 
    stream.readSync(buf) 
    return buf; 
  } finally { 
    stream.close() 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
HarmonyOS
2024-09-10 10:25:38
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
zxjiu

相册路径不能直接用于传输,可以通过将相册图片复制到应用沙箱路径下,然后再用沙箱路径下的文件进行传输从相册复制文件到沙箱目录,可参考如下代码:

function SavePhotoToFileDir(){ 
  try { 
    let photoSelectOptions = new picker.PhotoSelectOptions(); 
    photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE; 
    photoSelectOptions.maxSelectNumber = 1; 
    let photoPicker = new picker.PhotoViewPicker(); 
    let uris: Array<string> = []; 
    photoPicker.select(photoSelectOptions).then((photoSelectResult: picker.PhotoSelectResult) => { 
      uris = photoSelectResult.photoUris; 
      let fileArray = uris[0].split("/"); 
      let fileName = fileArray[fileArray.length - 1]; 
      let file = fs.openSync(uris[0], fs.OpenMode.READ_ONLY); 
      let cacheDir = mContext.filesDir; 
      let dstPath = cacheDir + '/' + fileName; 
      let file2 = fs.openSync(dstPath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); 
      fs.copyFileSync(file.fd, file2.fd); 
      fs.closeSync(file); 
      console.info('PhotoViewPicker.select successfully, photoSelectResult uri: ' + JSON.stringify(photoSelectResult)); 
    }).catch((err: BusinessError) => { 
      console.error('PhotoViewPicker.select failed with err: ' + JSON.stringify(err)); 
    }); 
  } catch (error) { 
    let err: BusinessError = error as BusinessError; 
    console.error('PhotoViewPicker failed with err: ' + JSON.stringify(err)); 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
分享
微博
QQ
微信
回复
2024-09-10 16:12:58
相关问题
HarmonyOS 图片上传失败
792浏览 • 1回复 待解决
HarmonyOS 上传图片失败
1166浏览 • 1回复 待解决
使用FilePick上传uri失败,报错201
2465浏览 • 1回复 待解决
HarmonyOS RN不支持相册路径上传
622浏览 • 1回复 待解决
使用axios上传图片时候错误
751浏览 • 1回复 待解决
HarmonyOS 关于从相册中选择图片上传
762浏览 • 1回复 待解决
怎么实现后台上传图片
3068浏览 • 1回复 待解决
HarmonyOS 图片上传
574浏览 • 1回复 待解决
HarmonyOS如何上传图片到模拟器相册
1962浏览 • 1回复 待解决
HarmonyOS h5客服无法上传相册图片
790浏览 • 1回复 待解决
HarmonyOS axios上传文件失败
841浏览 • 1回复 待解决
HarmonyOS 无法上传图片
642浏览 • 1回复 待解决
HarmonyOS 相册/拍照 压缩 上传demo
934浏览 • 1回复 待解决
HarmonyOS 怎么图片进行压缩上传
902浏览 • 1回复 待解决
HarmonyOS 上传图片异常
707浏览 • 1回复 待解决
HarmonyOS 上传图片问题
614浏览 • 1回复 待解决
文件上传本地路径如何获取
1045浏览 • 1回复 待解决
HarmonyOS 将相册图片上传到服务器
1674浏览 • 1回复 待解决