有问
有问
  • 发布:2021-01-13 17:09
  • 更新:2021-01-16 12:08
  • 阅读:870

下载文件无法监听进度

分类:HTML5+

原因:
阿帕奇故障。

2021-01-13 17:09 负责人:DCloud_Android_DQQ 分享
已邀请:

最佳回复

DCloud_Android_DQQ

DCloud_Android_DQQ

这个问题很明确:

  1. 使用同样的的Hello 5+ 代码测试。

  2. 同样的wgt文件,不同的服务器地址:

我们的测试地址 :
http://47.104.xxx.xxx:13888/examples/android.wgt 有下载进度

你的测试地址:
https://xxxx.com/public/ccc/android.wgt 无下载进度

如你所说 你的api 没有返回 content-length字段。
无法知道待下载资源的总大小,自然无法知道资源的下载进度。

你需要调整一下你的apache服务器配置

var url = "http://47.104.xxx.xxx:13888/examples/android.wgt";  
    // var url = "https://xxx.com/public/ccc/android.wgt";  
    var options = {timeout: 2,    
                        retry: 0,    
                        retryInterval: 0  };  
    dtask = plus.downloader.createDownload( url, options );  
    dtask.addEventListener( "statechanged", function(task,status){  
        if(!dtask){return;}  
        console.log(task.state);  
        switch(task.state) {  
            case 1: // 开始  
                outLine( "开始下载..." );  
            break;  
            case 2: // 已连接到服务器  
                outLine( "链接到服务器..." );  
            break;  
            case 3: // 已接收到数据  
                outSet( "下载数据更新:" );  
                outLine( task.downloadedSize+"/"+task.totalSize );  
            break;  
            case 4: // 下载完成  
                outSet( "下载完成!" );  
                outLine( task.totalSize );  
            break;  
        }  
    } );  
    outSet( "创建下载任务成功!" );
  • DCloud_Android_DQQ

    回复 有问: 服务器当然会有配置文件来配置 不同类型的文件策略。 你可以试试把wgt的后缀名改成mp4试试。 至于更多的 服务器配置细节。建议你系统的学习一下。

    2021-01-16 11:55

  • DCloud_Android_DQQ

    回复 有问: 好的,已修改

    2021-01-16 12:06

  • 有问 (作者)

    我知道了,是阿帕奇的问题。但是并没有发现是什么原因。本地把gzip压缩模块开启又关闭了一下,重启后突然就可以了。服务器上还是不行。有空我重装下再看吧。

    另外就是下载监听的进度有点慢的太多了,希望再调快一些。或者不要让它下载完就安装,应该在状态3里判断是否下载到100%进度再安装。目前我在状态3里判断下载进度>=100再进行安装也不行,只要它下载完就会自动安装了。

    2021-01-16 12:57

DCloud_Android_DQQ

DCloud_Android_DQQ

你给个示例代码。 我试试

DCloud_Android_DQQ

DCloud_Android_DQQ

function createDownloadTask(){  
    if ( dtask ) {  
        outLine( "下载任务已创建!" );  
        return;  
    }  
    var url = "http://47.104.xxx.xxx:13888/examples/jita.mp4";  
    var options = {timeout: 2,    
                        retry: 0,    
                        retryInterval: 0  };  
    dtask = plus.downloader.createDownload( url, options );  
    dtask.addEventListener( "statechanged", function(task,status){  
        if(!dtask){return;}  
        console.log(task.state);  
        switch(task.state) {  
            case 1: // 开始  
                outLine( "开始下载..." );  
            break;  
            case 2: // 已连接到服务器  
                outLine( "链接到服务器..." );  
            break;  
            case 3: // 已接收到数据  
                outSet( "下载数据更新:" );  
                outLine( task.downloadedSize+"/"+task.totalSize );  
            break;  
            case 4: // 下载完成  
                outSet( "下载完成!" );  
                outLine( task.totalSize );  
            break;  
        }  
    } );  
    outSet( "创建下载任务成功!" );  
}

你用Hello 5+测试一下

DCloud_Android_DQQ

DCloud_Android_DQQ

downloadImage: function () {  

                var url = "http://47.104.xxx.xxx:13888/examples/jita.mp4";  
                var options = {timeout: 2,    
                                    retry: 0,    
                                    retryInterval: 0  };  
                var dtask = plus.downloader.createDownload( url, options );  
                dtask.addEventListener( "statechanged", function(task,status){  
                    if(!dtask){return;}  
                    console.log(task.state);  
                    switch(task.state) {  
                        case 1: // 开始  
                            console.log( "开始下载..." );  
                        break;  
                        case 2: // 已连接到服务器  
                            console.log( "链接到服务器..." );  
                        break;  
                        case 3: // 已接收到数据  
                            console.log( "下载数据更新:" );  
                            console.log( task.downloadedSize+"/"+task.totalSize );  
                        break;  
                        case 4: // 下载完成  
                            console.log( "下载完成!" );  
                            console.log( task.totalSize );  
                        break;  
                    }  
                });  

                dtask.start();  
        }  

uni-app 用这个代码试试

我用hx 3.0.7 未复现问题

有问

有问 (作者) - 生活,趣与失。

我又分别测试了未加密JS打包wgt,也是不能获取文件总大小。
HBX版本:
3.0.7.20210109-alpha

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