实际文件大小和上传文件大小不同android

时间:2016-08-08 10:25:18

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

我想在网络服务期间显示上传文件大小。所以我使用了以下两个链接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。为什么实际文件大小和上传总文件大小会有所不同。你能告诉我任何想法吗?

1 个答案:

答案 0 :(得分:-1)

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

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

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

}

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

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

此实体不仅包含我的文件。它还包含我的缩略图文件和其他参数。所以尺寸变得不同了。所以我添加了缩略图大小的文件大小。它的上传文件大小将更接近我剩下的字节将用于其他参数。现在我解决了它。