小安迪
小安迪
  • 发布:2019-05-07 14:32
  • 更新:2020-03-05 12:09
  • 阅读:3194

uni.downloadFile没有返回downloadTask对象

分类:uni-app

根据文档的例子做的文件下载,想要监控下载进度,然后报错说downloadTask为undefined,不知道为什么,代码如下,就是按照下面的例子写的

const downloadTask = uni.downloadFile({
url: 'http://www.example.com/file/test', //仅为示例,并非真实的资源
success: (res) => {
if (res.statusCode === 200) {
console.log('下载成功');
}
}
});

downloadTask.onProgressUpdate((res) => {
console.log('下载进度' + res.progress);
console.log('已经下载的数据长度' + res.totalBytesWritten);
console.log('预期需要下载的数据总长度' + res.totalBytesExpectedToWrite);

// 测试条件,取消下载任务。  
if (res.progress > 50) {  
    downloadTask.abort();  
}  

});

2019-05-07 14:32 负责人:无 分享
已邀请:
DCloud_UNI_HT

DCloud_UNI_HT

仅为示例,并非真实的资源 。 你都没有下载,为什么会返回 ?

  • 小安迪 (作者)

    我只是贴出示例代码,url是我的真实文件地址,确实是可以下载的


    2019-05-08 16:19

2***@qq.com

2***@qq.com - 咸鱼王

这个问题我遇到过,首先,要确保服务器端返回了文件的大小,才可以监听到下载进度条

  • 7***@qq.com

    可很多时候,服务器的返回是向响应中丢一个文件流,而不是资源文件,这时是取不到文件大小的!


    2020-03-05 12:20

1***@qq.com

1***@qq.com - 前端开发

这个问题解决了吗,我也遇到同样的问题

1***@qq.com

1***@qq.com - 前端开发

经验证,接口响应头中是 Transfer-Encoding: chunked 的,使用 plus.net.XMLHttpRequest 无法处理,有bug。 请求文件请使用 plus.downloader.createDownload ,请求数据要包含 content-length 才行。

uni.downloadFile 使用的是 plus.net.XMLHttpRequest ,这里改成 plus.downloader.createDownload 就可以了

  • z***@163.com

    大佬,能否提供一下你uni.downloadFile的完整代码?把IP商品这些敏感内容去掉


    2019-10-11 18:00

  • 1***@qq.com

    回复 z***@163.com: 大佬。你们怎么解决的


    2020-06-09 16:14

7***@qq.com

7***@qq.com - tom

				const downloadTask=uni.downloadFile({  
					url: this.downloadUrl,  
					success: res => {  
						this.move_to_download_dir(res.tempFilePath);  
					}  
				});  
				console.log(downloadTask);  
				downloadTask.onProgressUpdate((res)=>{  
					this.downloadProgress=res.progress;  
				});  

这里得到的 downloadTask为{},一个空的对象,后面的下载进度的监听,什么都不会做。因为是对一个空对象在进行监听!!

9***@qq.com

9***@qq.com

我也遇到这种情况,我返回的是{"id":4,"_callbackId":30,"_callbacks":[]},没有进度

7***@qq.com

7***@qq.com - tom

http://219.139.128.26:8081/experenceDetails?id=30

该问题目前已经被锁定, 无法添加新回复