长度在进度条中显示减号

Posted

技术标签:

【中文标题】长度在进度条中显示减号【英文标题】:length shows minus in progress bar 【发布时间】:2019-11-18 14:20:10 【问题描述】:

我正在从 URL 下载视频,当我试图获取进度时它显示负值,在下面我添加了我的代码,

byte[] buffer = new byte[1024];
int len1 = 0;
long total = 0;
while ((len1 = is.read(buffer)) != -1) 
    if (cancelDialogStatus) 
        break;
    
    Log.e("System out", "doInBackground: progress:::" + len1);
    total += len1;
    // publishing the progress....
    // After this onProgressUpdate will be called
    int prg = (int) ((total * 100) / lenghtOfFile);
    Log.d("System out", "doInBackground: progress:::" + prg);
    if (prg > 100) 
        publishProgress(""
                + 100);
        fos.write(buffer, 0, len1);
        break;
     else 
        publishProgress(""
                + (int) ((total * 100) / lenghtOfFile));
        fos.write(buffer, 0, len1);
    

【问题讨论】:

你是如何获得 lenghtOfFile 的? HttpURLConnection con = null;试试 downloadTimeStr = ""; URL url = 新 URL("url") url.openConnection(); con.setRequestMethod("GET"); con.setConnectTimeout(Constants.STANDARD_TIMEOUT); // con.setDoOutput(true);试试 con.connect(); catch (Exception ex) //ex.printStackTrace(); long lenghtOfFile = con.getContentLength(); 你有没有经过this solution这基本上是由于服务器没有设置header参数。就像您从 gdrive 下载时一样,在下载过程中它不会显示总文件大小。 好的,非常感谢...您解决了我的问题 你的文件长度是-1 【参考方案1】:

这基本上是由于服务器没有设置Content-Length 标头参数。就像您从 Gdrive 下载时一样,在下载过程中它不会显示总文件大小。

简单的答案是内容长度未知。或者更具体地说,服务器没有在响应消息中设置 Content-Length 标头。

详细解决办法described here.

【讨论】:

以上是关于长度在进度条中显示减号的主要内容,如果未能解决你的问题,请参考以下文章

获取 ASP.NET GridView 单元格值并在 JQuery 进度条中显示

从android中的sql server下载表格行时显示进度条

使用引导进度条以模态显示上传进度

android开发_LayerlistDrawable(层叠图片)在进度条中的应用

网页载入进度条中的javascript

从 ffmpeg 获取实时输出以在进度条中使用(PyQt4,stdout)