目前新版本中filePreview预览word、excel能力已落地,文档中暂未体现,还请参考以下demo试下: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: '2.docx', // title: '1.xls', // title: '1.pdf', // uri: 'file://com.example.api12demo/data/storage/el2/base/haps/entry/files/1.pdf', uri:'file://com.example.api12demo/data/storage/el2/base/haps/entry/files/2.docx', // uri: 'file://com.example.api12demo/data/storage/el2/base/haps/entry/files/1.xls', // mimeType: 'application/pdf' // 文件(夹)的媒体资源类型,如text/plain // mimeType: 'application/vnd.ms-excel' // 文件(夹)的媒体资源类型,如text/plain mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' // 文件(夹)的媒体资源类型,如text/plain }; function copyFile() { console.log("copyFile!") // let srcFileDescriptor = context.resourceManager.getRawFdSync("1.pdf"); let srcFileDescriptor = context.resourceManager.getRawFdSync("2.docx"); // 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 + "/1.pdf"; // let dstPath = pathDir + "/1.xls"; let dstPath = pathDir + "/2.docx"; 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 console.log('dstPath---',dstPath) 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 } } console.log('=========close=========') 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%') } }
目前新版本中filePreview预览word、excel能力已落地,文档中暂未体现,还请参考以下demo试下: