HarmonyOS 文件预览失败?

1.文件预览filePreview 只支持本地文件,不支持在线文件吗?

2.预览失败。

let url = 'xxxx';
axios.get(url, {
  responseType: 'ARRAY_BUFFER',
}).then(async (res: AxiosResponse) => {
  if (res.status == 200) {
    let buffer = res.data as ArrayBuffer;
    let file = await fs.open(this.uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
    await fs.write(file.fd, buffer);
    await fs.close(file.fd);
    let uiContext = getContext(this);
    filePreview.canPreview(uiContext, this.uri).then((result) => { // 传入支持的文件类型且项目存在时会返回true
      if (result) {
        let uiContext = getContext(this);
        let displayInfo: filePreview.DisplayInfo = {
          x: 100,
          y: 100,
          width: 800,
          height: 800
        };
        let fileInfo: filePreview.PreviewInfo = {
          title: '1721784649271.jpg',
          uri: this.uri,
          mimeType: 'image/jpeg'
        };
        filePreview.openPreview(uiContext, fileInfo, displayInfo).then(() => {
          console.info('Succeeded in opening preview');
        }).catch((err: BusinessError) => {
          console.error(`Failed to open preview, err.code = ${err.code}, err.message = ${err.message}`);
        });
      }
      console.info(`Succeeded in obtaining the result of whether it can be previewed. result = ${result}`);
    }).catch((err: BusinessError) => {
      console.error(`Failed to obtain the result of whether it can be previewed, err.code = ${err.code}, err.message = ${err.message}`);
    });
  }
}).catch((err: object) => {
});
阅读 488
1 个回答

请先使用这个demo,来判断资源是否可以被预览:

let uri = 'file://docs/storage/Users/currentUser/Documents/1.txt';
let uiContext = getContext(this);
filePreview.canPreview(uiContext, uri).then((result) => { // 传入支持的文件类型且项目存在时会返回true
  console.info(`Succeeded in canPreview. result = ${result}`);
}).catch((err: BusinessError) => {
  console.error(`Failed to canPreview, err.code = ${err.code}, err.message = ${err.message}`);
});

文件预览不支持在线预览。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进