【问题标题】:Actual file size and uploading file size gets differ android实际文件大小和上传文件大小不同android
【发布时间】:2016-08-08 10:25:18
【问题描述】:

我想在网络服务期间显示上传文件的大小。所以我使用了以下两个链接HttpClient Post with progress and MultipartEntityBuildergradle-hockeyapp-plugin,在那里我找到了ProgressHttpEntityWrapper.java 类。使用这个类我发现了上传文件的大小。使用下面的方法

 public String getFileSize(long size) {
        if (size <= 0)
            return "0";
        final String[] units = new String[] { mContext.getResources().getString(R.string.bytes), mContext.getResources().getString(R.string.kilo_bytes), mContext.getResources().getString(R.string.mega_bytes), mContext.getResources().getString(R.string.giga_bytes), mContext.getResources().getString(R.string.tera_bytes) };
        int digitGroups = (int) (Math.log10(size) / Math.log10(1024));
        return new DecimalFormat("#,##0.#").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups];
    }

但与原始文件大小相比,它给出了错误的文件大小。实际和上传的总文件大小各不相同。

例如,我的实际文件大小为 297.1 KB,但它显示的总文件大小为 365.5 KB。为什么实际文件大小和上传总文件大小会有所不同。你能给我建议吗?

【问题讨论】:

  • 您的意思是您的函数返回的字符串与您传递的长度不匹配?
  • @wutzebaer 不,请查看第二个链接,您可以在其中找到 ProgressHttpEntityWrapper 类。在该类中,它返回方法 getCurrentProgress() 内的总字节数。它是不正确的。它与实际文件大小不同。
  • 也许 offset+len 比 b.length 大,因此只写了 len 的一部分?#
  • @wutzebaer 对不起,我听不懂你想说什么。你能解释一下吗?
  • this.transferred += Math.min(len, b.length-off)

标签: java apache-httpclient-4.x progress


【解决方案1】:

好的,谢谢您的回复。我还发现了为什么没有返回确切的文件大小。这是因为我们将此调用分配回整个实体,如下所示,

  ProgressHttpEntityWrapper.ProgressCallback progressCallback = new ProgressHttpEntityWrapper.ProgressCallback() {

    @Override
    public void progress(float progress) {
        //Use the progress
    }

}

在下面的代码中,我将此进度回调分配给我的整个实体

httpPost.setEntity(new ProgressHttpEntityWrapper(entityBuilder.build(), progressCallback));

该实体不仅包含我的文件。它还包含我的缩略图文件和其他参数。所以尺寸会有所不同。所以我用缩略图大小添加了我的文件大小。它将更接近我的上传文件大小,其余字节将用于我的其他参数。现在我已经解决了。

【讨论】:

  • 不是答案,构成问题一部分的材料必须发布在问题本身中,而不是通过链接。在这种情况下,很明显是您的复制代码错误,而不是您的数字格式代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-10
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2012-09-02
  • 1970-01-01
相关资源
最近更新 更多