大致逻辑是 通过 fs 清空本地的一个文件夹地址,download下载文件 然后把文件保存进去之后,通过docReader打开即可(下面有效果图可以看看满不满足你的需求)
// 预览文件 item:单个文件对象
function filePreview(item) {
var { type: resType, dirId, resId, bucketId, title, fileId } = item;
//resType == 'PDF' || resType == 'PPT' || resType == 'EXCEL' || resType == 'WORD'||resType == 'TXT' || resType == 'IMAGE';这是我目前用到的类型,如果你有别的类型话也可以试试能不能用,如果不可以那就得自己写win了
operationFolder(URL + fileId, title);
}
//删除对应文件夹下类容?
function operationFolder(fileUrl, fileName) {
//下载处理
var fs = api.require('fs');
//文件路径
var localPath = api.cacheDir + '/personalDocuments/' + fileName;
console.log(localPath);
fs.rmdir(
{
path: api.cacheDir + '/personalDocuments', //删除本地文件夹
},
function (ret, err) {
// console.log(JSON.stringify(ret) + '\n' + JSON.stringify(err));
//下载再打开
downloadFile(fileUrl, localPath);
}
);
}
//下载文件
function downloadFile(fileUrl, localPath) {
api.showProgress({
title: '文件加载中... ',
});
//下载附件 传参可以具体去看api:https://docs.apicloud.com/Client-API/api#17
api.download(
{
url: fileUrl,//下载地址
encode: false,//是否对url进行编码
savePath: localPath,//存储路径,不传时使用自动创建的路径
report: true,//下载过程是否上报
cache: true,//是否使用本地缓存
allowResume: true,//是否允许断点续传
},
function (ret, err) {
// console.log(JSON.stringify(ret) + '\n' + JSON.stringify(err));
if (ret.state == 1) {
api.hideProgress();
//下载成功 打开文件
openFile(localPath);
} else if (ret.state == 2) {
api.hideProgress();
openToast('文件加载失败');
}
}
);
}
//打开文件
function openFile(fileUrl) {
var docReader = api.require('docReader');
docReader.open(
{
path: fileUrl,
},
function (ret, err) {
if (ret.status) {
//Android 这里就会弹出系统的第三方软件弹框,ios内置会直接打开
// console.log(JSON.stringify(ret));
} else {
// console.log(JSON.stringify(err));
if (err.code == 2) {
openToast('文件格式不支持');
} else if (err.code == 1) {
openToast('文件不存在');
}
}
}
);
}
版权声明:本文为ssoutlook原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。