微信小程序下载文件
downloadFile
const downloadTask = wx.downloadFile({
url: %url%,
success(res) {
// 后续操作
}
});
downloadTask.onProgressUpdate(_res => {
console.log(_res)
})
正确执行下载文件操作获取下载进度的时候返回应该是这样的
但是 有时候我们拿到的返回内容是这样的
{
progress: 0,
totalBytesExpectedToWrite: -1,
totalBytesWritten: 12266,
}
下载进度恒为 0,数据总量恒为 -1
在小程序社区 各种搜索也找不到正确的解决方案,唯一看到一个比较靠谱的答复是说在wx.downloadFile
接口中添加header
,header
里设置请求头Content-Length: xxx
尝试之后依然无效
然后各种对比了真机环境和浏览器环境里请求的每个细节
然后发现在浏览器环境中,Response Headers
里返回的 Transfer-Encoding
是chunked
,而真机上返回的是Identity
,所以问题会不会就在这里?
动手试一下
修改一下 downloadFile请求,加入header
请求头:
const downloadTask = wx.downloadFile({
header: {
'Accept-Encoding': 'chunked',
},
url: %url%,
success(res) {
// 后续操作
}
});
downloadTask.onProgressUpdate(_res => {
console.log(_res)
})