#鸿蒙学习大百科#如何实现图片或视频类型文件选择器?

如何实现图片或视频类型文件选择器?

HarmonyOS
2024-10-21 09:22:20
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
海底捞天王
//1.导入选择器模块和文件管理模块。
import photoAccessHelper from '@ohos.file.photoAccessHelper';
import fs from '@ohos.file.fs';
import { BusinessError } from '@ohos.base';
//2.创建图片-音频类型文件选择选项实例。
const photoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
//3。选择媒体文件类型和选择媒体文件的最大数目。
photoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE; // 过滤选择媒体文件类型为IMAGE
photoSelectOptions.maxSelectNumber = 5; // 选择媒体文件的最大数目
@Entry
@Component
struct Index {
  build() {
    Row() {
      Column() {
        Text("Hello")
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            //4.创建图库选择器实例,调用PhotoViewPicker.select接口拉起图库界面进行文件选择。文件选择成功后,返回PhotoSelectResult结果集。
            let uris: Array<string> = [];
            const photoViewPicker = new photoAccessHelper.PhotoViewPicker();
            photoViewPicker.select(photoSelectOptions).then((photoSelectResult: photoAccessHelper.PhotoSelectResult) => {
              uris = photoSelectResult.photoUris;
              console.info('photoViewPicker.select to file succeed and uris are:' + uris);
              // 5.待界面从图库返回后,再通过类似一个按钮调用其他函数,使用fs.openSync接口,通过uri打开这个文件得到fd。这里需要注意接口权限参数是fs.OpenMode.READ_ONLY。
              let file = fs.openSync(uris[0], fs.OpenMode.READ_ONLY);
              console.info('file fd: ' + file.fd);
              //6.通过fd使用fs.readSync接口读取这个文件内的数据,读取完成后关闭fd。
              let buffer = new ArrayBuffer(4096);
              let readLen = fs.readSync(file.fd, buffer);
              console.info('readSync data to file succeed and buffer size is:' + readLen);
              fs.closeSync(file);

            }).catch((err: BusinessError) => {
              console.error(`Invoke photoViewPicker.select failed, code is ${err.code}, message is ${err.message}`);
            })
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}
分享
微博
QQ
微信
回复
2024-10-21 14:49:32
相关问题
#鸿蒙学习大百科#模拟如何抓包?
308浏览 • 1回复 待解决