美兰十三的想疗院


一个不务正业的前端狗,爱纹身、玩乐队、哥金党、专门写Bug~


微信小程序下载文件

downloadFile

const downloadTask = wx.downloadFile({
    url: %url%,
    success(res) {
        // 后续操作
    }
});
downloadTask.onProgressUpdate(_res => {
    console.log(_res)
})

正确执行下载文件操作获取下载进度的时候返回应该是这样的
1576751439322

但是 有时候我们拿到的返回内容是这样的

{
    progress: 0,
    totalBytesExpectedToWrite: -1,
    totalBytesWritten: 12266,
}

下载进度恒为 0,数据总量恒为 -1

在小程序社区 各种搜索也找不到正确的解决方案,唯一看到一个比较靠谱的答复是说在wx.downloadFile接口中添加headerheader里设置请求头Content-Length: xxx

尝试之后依然无效

然后各种对比了真机环境和浏览器环境里请求的每个细节
然后发现在浏览器环境中,Response Headers 里返回的 Transfer-Encodingchunked,而真机上返回的是Identity,所以问题会不会就在这里?

动手试一下
修改一下 downloadFile请求,加入header 请求头:

const downloadTask = wx.downloadFile({
    header: {
        'Accept-Encoding': 'chunked',
    },
    url: %url%,
    success(res) {
        // 后续操作
    }
});
downloadTask.onProgressUpdate(_res => {
    console.log(_res)
})

成功!完美!

建议打赏金额1-10元

支付宝打赏

微信打赏

最近的文章

Taro & Uni-app多终端编译对比

先挖个坑一个,回头过来再补充。。。 基础认知 * Taro => react * Uni-app => vue 或 类vue app编译 * Taro => react nat…

Taro, uniapp, react, Vue, app 继续阅读
更早的文章

推荐几个Touch Bar的扩展应用

Long Time No See & お久しぶりです Touch Bar 作为一个效率工具,已经很出色了,但是可以更出色一点 所以 我就来推荐一下了 1、BTT(Better Touch Too…

继续阅读
comments powered by Disqus
沪ICP备15043964号-3