HarmonyOS 预览沙箱路径下的文件失败

如图所示,尝试使用 filePreview.openPreview 预览沙箱路径下的文件,但在预览页面显示预览失败,请问是路径有问题吗?

HarmonyOS 预览沙箱路径下的文件失败 -鸿蒙开发者社区

HarmonyOS 预览沙箱路径下的文件失败 -鸿蒙开发者社区

HarmonyOS
2024-12-23 16:06:34
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

请参考以下示例修改,检查下let fileInfo: filePreview.PreviewInfo是否正确,

demo:

import { filePreview } from '@kit.PreviewKit';
import { BusinessError } from '@kit.BasicServicesKit';
import fs from '@ohos.file.fs';
import fileUri from "@ohos.file.fileuri";

let uiContext = getContext(this);
let displayInfo: filePreview.DisplayInfo = {
  x: 100,
  y: 100,
  width: 800,
  height: 800
};
let fileInfo: filePreview.PreviewInfo = {
  title: 'th.jpg',
  uri: 'file://com.example.previewfileapp/data/storage/el2/base/haps/entry/files/th.jpg',
  mimeType: 'image/jpeg'
};

@Entry
@Component
struct Index {

  build() {
    Column() {
      Row() {
        Button('复制')
          .onClick(() => {
            try {
              getContext(this).resourceManager.getRawFileContent("th.jpg", (error: BusinessError, value: Uint8Array) => {
                if (error != null) {
                  console.error("error is " + error);
                } else {
                  let myBuffer:ArrayBufferLike = value.buffer
                  let context = getContext(this);
                  //沙箱路径
                  let filePath = context.filesDir + '/' + "th.jpg";
                  console.log("testTag-filePath:" + filePath);
                  let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
                  let writeLen = fs.writeSync(file.fd, myBuffer);
                  console.info("testTag-write data to file succeed and size is:" + writeLen);
                  fs.closeSync(file);
                }
              });
            } catch (error) {
              let code = (error as BusinessError).code;
              let message = (error as BusinessError).message;
              console.error(`callback getRawFileContent failed, error code: ${code}, message: ${message}.`);
            }
          })
      }
      .justifyContent(FlexAlign.SpaceAround)
      .width('100%')

      Row() {
        Button('预览')
          .onClick(() => {
            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}`);
            });
          })
      }
      .justifyContent(FlexAlign.SpaceAround)
      .width('100%')
    }
    .justifyContent(FlexAlign.SpaceAround)
    .height('100%')
    .width('100%')
  }
}
分享
微博
QQ
微信
回复
2024-12-23 19:39:35
相关问题
修改沙箱路径json文件指定内容
2628浏览 • 1回复 待解决
ETs,对沙箱路径json文件内容遍历
3513浏览 • 1回复 待解决
沙箱路径文件怎么拿取?
2060浏览 • 1回复 待解决
HarmonyOS 文件预览失败
198浏览 • 1回复 待解决
HarmonyOS 文件预览功能失败
333浏览 • 1回复 待解决
HarmonyOS web加载沙箱文件失败
386浏览 • 1回复 待解决