HarmonyOS 文件下载并且同步进行预览

是否有支持文件下载并且同步进行预览pdf、图片、doc文档、txt等的示例?

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

常见的office文档,本地沙箱路径pdf、doc、docx、xls、xlsx、ppt、pptx已经可以预览。

示例参考:

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

let context = getContext(this) as common.UIAbilityContext;
let uiContext = getContext(this);

let fileInfo: filePreview.PreviewInfo = {
  // 文件预览信息,包含了文件标题名、uri以及文件类型(mimeType)
  title: '1.xls',
  // title: '蓝牙ble 模式的demo使用说明1.pdf',
  // uri: 'file://com.lvhui.myapplication/data/storage/el2/base/haps/entry/files/蓝牙ble 模式的demo使用说明1.pdf',
  uri: 'file://com.xxx.myapplication/data/storage/el2/base/haps/entry/files/1.xls',
  // mimeType: 'application/pdf' // 文件(夹)的媒体资源类型,如text/plain
  mimeType: 'application/vnd.ms-excel' // 文件(夹)的媒体资源类型,如text/plain
};

function copyFile() {
  console.log("copyFile!")
  // let srcFileDescriptor = context.resourceManager.getRawFdSync('蓝牙ble 模式的demo使用说明1.pdf');
  let srcFileDescriptor = context.resourceManager.getRawFdSync('1.xls');
  //这里填rawfile文件夹下的文件名(包括后缀)
  let stat = fs.statSync(srcFileDescriptor.fd)
  console.log(`stat isFile:${stat.isFile()}`);
  // 通过UIAbilityContext获取沙箱地址filesDir,以Stage模型为例
  let pathDir = context.filesDir;
  console.log("path:", pathDir)
  // let dstPath = pathDir + "/蓝牙ble 模式的demo使用说明1.pdf";
  let dstPath = pathDir + "/1.xls";
  let dest = fs.openSync(dstPath, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE)
  let bufsize = 4096
  let buf = new ArrayBuffer(bufsize)
  let off = 0, len = 0, readedLen = 0
  while (len = fs.readSync(srcFileDescriptor.fd, buf, { offset: srcFileDescriptor.offset + off, length: bufsize })) {
    readedLen += len
    fs.writeSync(dest.fd, buf, { offset: off, length: len })
    off = off + len
    if ((srcFileDescriptor.length - readedLen) < bufsize) {
      bufsize = srcFileDescriptor.length - readedLen
    }
  }
  fs.close(dest.fd)
}

@Entry
@Component
struct Index {
  @State message: string = '预览文件';

  build() {
    Row() {
      Column() {
        Button('传到沙箱')
          .onClick(() => {
            copyFile()
          })
        Button(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            filePreview.openPreview(uiContext, fileInfo).then(() => {
              console.info('openPreview success');
            }).catch((err: BusinessError) => {
              console.error('openPreview failed, err = ' + err.message);
            });
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}
分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS 文件下载预览
162浏览 • 1回复 待解决
如何使用预览接口进行文件预览
681浏览 • 1回复 待解决
HarmonyOS 下载到本地文件预览问题
266浏览 • 1回复 待解决
基于WebDownloadDelegate的PDF下载预览
693浏览 • 1回复 待解决
卡片能否通过预览进行预览
778浏览 • 1回复 待解决
HarmonyOS 文件预览失败
106浏览 • 1回复 待解决
HarmonyOS 文件预览问题
225浏览 • 1回复 待解决
HarmonyOS PDF文件预览
186浏览 • 1回复 待解决
HarmonyOS 怎么预览文件
95浏览 • 1回复 待解决
HarmonyOS 文件下载问题
203浏览 • 1回复 待解决
HarmonyOS 文件下载相关
174浏览 • 1回复 待解决
HarmonyOS 图片文件下载
278浏览 • 1回复 待解决