DocumentViewPicker 附件选择 - 鸿蒙 HarmonyOS Next

首先,通过 选择器 配置访问文件类型,音视频、文稿、文件等均可,例如如下文件类型

['.txt', '.log', '.csv', '.ini', '.conf', '.md', '.markdown', '.rtf', '.json', '.xml', '.ets', '.java', '.py', '.c', '.cpp', '.h', '.html']

选中的文件数量可通过 maxSelectNumber 控制,回调结果为字符串数组 Array<string>

其次,将获取到的文件通过 文件管理 进行数据处理,例如转码 Base64

最后,将二者按需结合即可

// 创建文件选择项实例
let documentSelectOptions = new picker.DocumentSelectOptions;
// 指定访问文件目录
// documentSelectOptions.defaultFilePathUri = 'file://docs/storage/Users/iMed/file';
// 设置文件后缀类型 
documentSelectOptions.fileSuffixFilters = ['png', 'jpg', 'jpeg', 'txt', '.pdf', '.word', '.doc', 'docx', '.xls', '.xlsx', '.ppt', '.pptx'];
// 设置最大选择数量
if (selectType == 'more') {
  if (1 < maxNumber) { // 可定义选择数量,不设置默认多选
    documentSelectOptions.maxSelectNumber = maxNumber;
  }
} else {
  documentSelectOptions.maxSelectNumber = 1;
}

// 创建文件选择实例
let documentPicker = new picker.DocumentViewPicker;
// 调用 select 接口拉起 filePicker 应用界面进行选择
documentPicker.select(documentSelectOptions).then((documentSelectResult: Array<string>) => {
  // 选中文件回调
  console.info('[附件选择] - 回调');
  console.info(JSON.stringify(documentSelectResult));

  // 读取文件内容
  const uri = documentSelectResult[0];
  let file = fs.openSync(uri, fs.OpenMode.READ_WRITE);
  // const file = fs.openSync(uri, fs.OpenMode.READ_ONLY);
  let buf = new ArrayBuffer(4096);
  fs.readSync(file.fd, buf);
  let buffArr = new Uint8Array(buf);

  // 编码 Base64
  let helper = new util.Base64Helper;
  const base64Data = helper.encodeToStringSync(buffArr);
  console.info('[base64 data]');
  console.info(base64Data);
  // do something ...
DocumentViewPicker 组件调用后效果

以上便是此次分享的全部内容,希望能对大家有所帮助!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容