使用Ion上传Android文件,但上传文件为空

非淡泊无以明志,非宁静无以致远。这篇文章主要讲述使用Ion上传Android文件,但上传文件为空相关的知识,希望能为你提供帮助。
我用Ion上传回来了成功。但上传的文件是空的。 作为来自wireshark的数据包转储,Ion没有发送文件内容。
我弄错了什么?
这是我的代码。
MyFragment.java

Ion.with(getContext()) .load(uploadUrl) .uploadProgressHandler(new ProgressCallback() { @Override public void onProgress(long downloaded, long total) { LOG.debug("" + downloaded + " / " + total); } }) .setMultipartFile("file", new File(currentPhotoPath)) .asJsonObject() .setCallback(new FutureCallback< JsonObject> () { @Override public void onCompleted(Exception e, JsonObject result) { String msg; if (e != null) { LOG.error("upload failed:", e); } else { LOG.info("upload completed: {}", result.toString()); } });

我正在使用android studio 3.0和LG G 5.0版。
build.gradle android {compileSdkVersion 26 buildToolsVersion '26 .0.2'
defaultConfig { applicationId "kr.co.digitalpie.dansok" minSdkVersion 17//Android 4.2 Jelly Bean targetSdkVersion 26 versionCode 55 versionName "4.0.0" multiDexEnabled true dependencies { compile 'com.koushikdutta.ion:ion:2.+' ...

Whireshark packet dump
使用Ion上传Android文件,但上传文件为空

文章图片

来自whireshark,Ion没有正确发送文件。 所以我检查了我的设备本地照片是否有效。 上传照片位于/storage/emulated/0/Pictures/DigitalPie/P_20171214_141206_2058037049.jpg,它的大小是350Kbytes。
答案这完全是我的愚蠢错误造成的。在开始上传之前,我的另一个asynctask试图压缩它,但失败了。因此,压缩图像是空的。
我通过记录如下发现了我的错误。
LOG.info("uploading filesize: " + currentPhotoPath.getSize()); Ion.with(getContext()) ...

日志说uploading filesize: 0
【使用Ion上传Android文件,但上传文件为空】希望我的愚蠢错误能够帮助别人。

    推荐阅读