plus.downloader.createdownload下载文件时,如果url为静态文件资源地址是没有问题的,但是我们做的政府项目,并不是什么资源文件都可以随便下载的,是需要有权限控制,这时候url就是一个后台接口地址,这个地址是处理权限后将文件以流的方式返回,使用的是java的spring框架,接口是以response的输出流方式。这种情况plus.downloader.createdownload方法无法读取到文件数据,还会间隔一段时间重发一次请求到后台,感觉是plus.downloader.createdownload方法对返回的方式有要求,请问要如何处理这种以文件流方式返回的接口进行文件下载?
3***@qq.com
- 发布:2019-04-22 14:26
- 更新:2022-05-31 15:18
- 阅读:2447
plus.downloader.createdownload如何请求以文件流返回的接口
分类:5+ SDK
3 个回复
1***@qq.com
请问解决了吗
7***@qq.com
saveList() {
if (this.ids.length < 1) {
uni.showToast({
title:
请选择要保存的数据
,icon: "none",
duration: 1800
})
return
}
var token = uni.getStorageSync("token")
var that = this
uni.showLoading({
title: '正在下载',
icon: 'loading',
})
let url = that.webUrl + "/api/miniApp/sceneEvidence/exportExcel";
let dtask = plus.downloader.createDownload(url, //请求地址,
{
method: "GET",
//本地路径开头使用file://,跟上手机文件本地目录
filename: "file://storage/emulated/0/Download/" + that.scene_name + '.xlsx', //利用保存路径,实现下载文件的重命名
},
function(d, status) {
that.isDownloading = false
//d为下载的文件对象
if (status == 200) {
//下载成功,d.filename是文件在保存在本地的相对路径,使用下面的API可转为平台绝对路径
let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
plus.runtime.openFile(d.filename); //选择软件打开文件
} else {
//下载失败
plus.downloader.clear(); //清除下载任务
}
})
dtask.setRequestHeader("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
dtask.setRequestHeader("Authorization", "Bearer " + token);
dtask.start();
}
我这个也是以文件流返回的,我这里是只下载excel
银霖
请问请求接口的时候, 请求头参数放哪里呢? 我放在与method一个位置没用