我想在web服务期间显示上传文件的大小。因此,我使用了以下两个链接HttpClient Post with progress and MultipartEntityBuilder,gradle-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。为什么实际文件大小和上传的总文件大小会有所不同。你能给我一些建议吗?
发布于 2016-08-09 19:10:24
好的,感谢您的回复。此外,我还发现了为什么没有返回确切的文件大小。这是因为我们将此调用分配给整个实体,如下所示。
ProgressHttpEntityWrapper.ProgressCallback progressCallback = new ProgressHttpEntityWrapper.ProgressCallback() {
@Override
public void progress(float progress) {
//Use the progress
}
}在下面的代码中,我将这个进度回调赋值给我的整个实体
新的ProgressHttpEntityWrapper(entityBuilder.build(),httpPost.setEntity(progressCallback);
其中这个实体不仅包含我的文件。它还包含我缩略图文件和其他参数。所以大小会有所不同。所以我把我的文件大小加上了缩略图的大小。它将更接近我的上传文件大小,其余的字节将作为我的其他参数。现在我解决了这个问题。
https://stackoverflow.com/questions/38826789
复制相似问题