首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android实际文件大小和上传文件大小不同

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

Stack Overflow用户
提问于 2016-08-08 18:25:18
回答 1查看 183关注 0票数 0

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

代码语言:javascript
复制
 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。为什么实际文件大小和上传的总文件大小会有所不同。你能给我一些建议吗?

EN

回答 1

Stack Overflow用户

发布于 2016-08-09 19:10:24

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

代码语言:javascript
复制
  ProgressHttpEntityWrapper.ProgressCallback progressCallback = new ProgressHttpEntityWrapper.ProgressCallback() {

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

}

在下面的代码中,我将这个进度回调赋值给我的整个实体

新的ProgressHttpEntityWrapper(entityBuilder.build(),httpPost.setEntity(progressCallback);

其中这个实体不仅包含我的文件。它还包含我缩略图文件和其他参数。所以大小会有所不同。所以我把我的文件大小加上了缩略图的大小。它将更接近我的上传文件大小,其余的字节将作为我的其他参数。现在我解决了这个问题。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38826789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档