【之前预览正常】:
使用uni.openDocument打开pdf、word等文件是正常的(之前后端返回的是文件对应的地址)。
控制台打印预览的结果【附件“之前”】
【现在无法正常预览】:
最近后端返回的文件格式变了,改成了文件流,使用uni.openDocument无法正常打开。
控制台打印预览的结果【附件“现在”】
预览时就会让选择第三方工具打开【如附件1】
【问题】:
1、如果后端返回文件流,怎么实现pdf等文件的正常预览?
【问题解决】:
后端调整content-type的值,如附件“解决”,这种格式是可以直接预览的
【代码】:
uni.downloadFile({
url: this.fileUrl, //下载地址接口返回
success: (data) => {
console.log(data, '=================');
if (data.statusCode === 200) {
//隐藏加载框
uni.hideLoading();
//文件保存到本地
uni.getFileSystemManager().saveFile({
tempFilePath: data.tempFilePath, //临时路径
success: (red) => {
//转化为小写
const finalType = this.fileType;
const imgTypes = ['jpg', 'png', 'jpeg', 'gif'];
const fileTypes = ['doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'pdf'];
//图片通过webView预览
if (imgTypes.findIndex((v) => v === finalType) !== -1) {
uni.navigateTo({
url: `/pages/webView/webView?src=${encodeURIComponent(red.savedFilePath)}`,
});
this.close();
return;
}
// 文件预览
if (fileTypes.findIndex((v) => v === finalType) !== -1) {
console.log(red.savedFilePath, 'open的地址');
uni.openDocument({
filePath: red.savedFilePath,
success: (sus) => {
console.log('成功打开', sus);
},
});
this.close();
return;
}
//系统中不包含的文件
uni.$u.toast('当前文件格式不支持预览');
this.close();
},
});
}
},
fail: (err) => {
console.log(err);
uni.$u.toast('文件下载失败');
},
});
s***@topnet.net.cn (作者)
最终就是通过这个方式解决的,感谢!
2023-10-13 16:06