自学内容网 自学内容网

uniapp小程序接口返回文件流下载文件

uniapp小程序接口返回文件流数据,下载导出文件

使用uni.request post方法获取文件流,如果是get可以使用uni.downloadFile

exportfun(){
uni.request({
url: 'xxx',
data: {},
method:'POST',
responseType: 'arraybuffer',
header: {},
success: (res) => {
const fs = uni.getFileSystemManager(); // 获取全局唯一的文件管理器 
const fileName = !res.header['Content-Disposition']?'xxx文件':decodeURIComponent(res.header['Content-Disposition'].match(/filename="?(.+)"?/)[1]) //文件名
fs.writeFile({ //写文件
// uni.env.USER_DATA_PATH 是小程序提供的访问用户文件路径的变量
filePath: uni.env.USER_DATA_PATH + '/' + fileName,
data: res.data,  // res.data就是接口返回的文件流
encoding: "binary", //二进制流文件必须是 binary
success(e) {
uni.openDocument({ // 打开文档
filePath: uni.env.USER_DATA_PATH + '/' + fileName, // 上面存入的文件路径
showMenu: true, // 显示右上角菜单
success: function(res2) {
console.log("打开文件",res2); 
},
})
}
})
}
});
}

获取 返回的文件流 文件名称

const Disposition=res.header['Content-Disposition']
const fileName =Disposition.match(/filename="?(.+)"?/)[1]
//如果返回乱码需要使用decodeURIComponent转换
fileName =decodeURIComponent(fileName)

原文地址:https://blog.csdn.net/hu104160112/article/details/140215287

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!