HarmonyOS 鸿蒙Next arkts photopicker 选中照片后无法将照片复制到沙盒

发布于 1周前 作者 zlyuanteng 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next arkts photopicker 选中照片后无法将照片复制到沙盒

arkts photopicker 选中照片后无法将照片复制到沙盒 :

async example01(context: common.Context):Promise<void> { 
  try { 
    this.sendFileToSandDir("1.jpg"); 
    this.createFile(); 
    const photoSelectOptions = new photoAccessHelper.PhotoSelectOptions(); 
    photoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE; 
    photoSelectOptions.maxSelectNumber = 5; 
    const photoViewPicker = new photoAccessHelper.PhotoViewPicker(); 
    photoViewPicker.select(photoSelectOptions).then(
      (photoSelectResult: photoAccessHelper.PhotoSelectResult) => { 
        uris = photoSelectResult.photoUris; 
        fs.copyFile(uris[0], directory + 'testcopy.jpg').then(
          () => { console.log('文件复制成功'); 
          }).catch((error:CopyFileError) => { 
            console.error('文件复制失败:', error.message); 
          }); 
        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)); 
  } 
}

请问有将选中图片拷贝到沙盒的路径 的demo吗?


更多关于HarmonyOS 鸿蒙Next arkts photopicker 选中照片后无法将照片复制到沙盒的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
import { common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import photoAccessHelper from '@ohos.file.photoAccessHelper';
import { fileIo as fs } from '@kit.CoreFileKit';
@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
  build() {
    Row() {
      Column() {
        // https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-file-picker-V5#photoviewpicker
        Button('选择图片')
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            this.example01()
          })
      }
      .width('100%')
    }
    .height('100%')
  }
  example01() {
    try {
      let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
      PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;
      PhotoSelectOptions.maxSelectNumber = 1;
      let photoPicker = new photoAccessHelper.PhotoViewPicker();
      photoPicker.select(PhotoSelectOptions).then((PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => {
        console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' +
        JSON.stringify(PhotoSelectResult));
        let context = getContext(this) as common.UIAbilityContext;
        let filesDir = context.filesDir;
        let photoUri: Array<string> = PhotoSelectResult.photoUris
        let src = fs.openSync(photoUri[0], fs.OpenMode.READ_ONLY)
        let output = fs.openSync(filesDir + '/1.jpg', fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
        fs.copyFileSync(src.fd, output.fd)
        fs.closeSync(src);
        fs.closeSync(output);
      }).catch((err: BusinessError) => {
        console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`);
      });
    } catch (error) {
      let err: BusinessError = error as BusinessError;
      console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`);
    }
  }
}

更多关于HarmonyOS 鸿蒙Next arkts photopicker 选中照片后无法将照片复制到沙盒的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对HarmonyOS 鸿蒙Next arkts photopicker选中照片后无法将照片复制到沙盒的问题,以下是一些可能的解决方案:

首先,确保已正确获取图片的URI,并通过MediaStore或文件访问API访问实际图片文件。其次,检查是否有足够的权限进行读写操作,如READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限(或在HarmonyOS中对应的权限)。

在复制过程中,使用File类或FileChannel等IO操作将图片从原始位置复制到应用的沙盒目录(通常是/storage/emulated/0/Android/data/<你的包名>/files)。注意处理可能出现的IO异常,并确保在复制完成后关闭所有打开的流。

此外,如果使用的是HarmonyOS特有的API,如photoAccessHelper等,请确保按照官方文档正确实现。同时,考虑到性能和资源使用,对于大文件操作,可以考虑使用异步IO或NIO。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部