1、流文件写入本地并预览(js函数封装)
2、代码(可直接复制)
/*
* 通过后端返回二进制流导出文件
* alian String 文件链接地址
* name 导出文件命名
* type支持 doc, xls, ppt, pdf, docx, xlsx, pptx
*/
function loadByRes(res, name,type) {
let arr=['doc', 'xls', 'ppt', 'pdf', 'docx', 'xlsx', 'pptx']
if(!arr.includes(type)){
return uni.showToast({
icon:'none',
title: '文件类型不支持',
})
}
const arrayBuffer = res;
// 将 ArrayBuffer 转换为 Blob 对象(微信小程序没有直接支持 Blob,但可以通过 base64 转换)
const blob = uni.arrayBufferToBase64(arrayBuffer);
// 创建一个临时文件路径(需要确保路径有效) 加入时间戳保证文件独立性
const filePath = `${wx.env.USER_DATA_PATH}/${name}${new Date().getTime()}`; // 替换为你的文件名和扩展名
// 将 base64 字符串转换为 ArrayBuffer,然后写入文件
const uint8Array = uni.base64ToArrayBuffer(blob);
// 使用 wx.getFileSystemManager().writeFile 写入文件
const fs = wx.getFileSystemManager();
fs.writeFile({
filePath: filePath,
data: uint8Array,
encoding: 'binary',
success: () => {
console.log('文件保存成功', filePath);
uni.openDocument({
filePath: filePath,
fileType: type, // 可选,指定文件类型,有助于系统更好地处理文件
showMenu: true, //可选 是否开启保存转发等功能
success: (res) => {
console.log('文件打开成功');
},
fail: (err) => {
console.error('文件打开失败', err);
}
});
// 你可以在这里进行后续操作,比如显示文件路径或者上传
},
fail: (err) => {
console.error('文件保存失败', err);
}
});
}