1.将responseType设置成arraybuffer 未设置时就会返回像乱码一样的东西 成功拿到 2.用文件管理器将文件写入本地
const fileManager = uni.getFileSystemManager();
const filePath = `${wx.env.USER_DATA_PATH}/${this.bookList[index].name}.pdf`;
fileManager.writeFile({
data: res.data,
filePath: filePath,
encoding: 'binary',
success: res => {
console.log(res);
}
})
3.直接打开写入本地的文件
uni.openDocument({
filePath: filePath,
fileType: 'pdf',
showMenu: true,
success: res => {
console.log('打开文档成功');
}
})
我试了一下移动端是自动打开微信浏览器,用开发者工具在pc端调试是自动打开了wps🤔
完整代码:
previewFile(index) {
uni.showLoading({
title: '正在加载...'
})
this.$request({
url: '',
method: 'POST',
data: {},
header: {},
responseType: 'arraybuffer'
}).then(res => {
const fileManager = uni.getFileSystemManager();
const filePath = `${wx.env.USER_DATA_PATH}/${this.bookList[index].name}.pdf`;
fileManager.writeFile({
data: res.data,
filePath: filePath,
encoding: 'binary',
success: res => {
uni.openDocument({
filePath: filePath,
fileType: 'pdf',
showMenu: true,
success: res => {
uni.hideLoading();
}
})
}
})
})
},
|