我想在网络服务期间显示上传文件大小。所以我使用了以下两个链接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。为什么实际文件大小和上传总文件大小会有所不同。你能告诉我任何想法吗?
答案 0 :(得分:-1)
ProgressHttpEntityWrapper.ProgressCallback progressCallback = new ProgressHttpEntityWrapper.ProgressCallback() {
@Override
public void progress(float progress) {
//Use the progress
}
}
在下面的代码中,我将此进度回调分配给我的整个实体
httpPost.setEntity(new ProgressHttpEntityWrapper(entityBuilder.build(),progressCallback));
此实体不仅包含我的文件。它还包含我的缩略图文件和其他参数。所以尺寸变得不同了。所以我添加了缩略图大小的文件大小。它的上传文件大小将更接近我剩下的字节将用于其他参数。现在我解决了它。