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() 
  } 
}
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)); 
  } 
}
分享
微博
QQ
微信
回复
2024-09-10 16:12:58
相关问题
使用FilePick上传uri失败,报错201
1628浏览 • 1回复 待解决
怎么实现后台上传图片
2249浏览 • 1回复 待解决
HarmonyOS如何上传图片到模拟器相册
654浏览 • 1回复 待解决
js开发上传文件路径问题
6086浏览 • 2回复 待解决
文件上传本地路径如何获取
250浏览 • 1回复 待解决
HarmonyOS如何实现图片上传
288浏览 • 1回复 待解决
HarmonyOS图片上传相关问题
323浏览 • 1回复 待解决
HarmonyOS文件上传怎么
358浏览 • 1回复 待解决
HarmonyOS web上传文件和图片
106浏览 • 1回复 待解决
HarmonyOS上传文件问题
291浏览 • 1回复 待解决
HarmonyOS Web 图片上传功能失效
49浏览 • 1回复 待解决
通过web上传图片并进行预览
802浏览 • 1回复 待解决
HarmonyOS 上传文件相关Demo
285浏览 • 1回复 待解决
HarmonyOS web组件上传文件
45浏览 • 1回复 待解决
HarmonyOS头像上传问题
285浏览 • 1回复 待解决
HarmonyOS日志文件上传问题
372浏览 • 1回复 待解决