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

Android file uploading using Ion, but upload file was empty

我用 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{ 编译SDK版本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

从 whireshark,Ion 没有正确发送文件。
所以我检查了我的设备本地照片是否有效。
上传照片位于 /storage/emulated/0/Pictures/DigitalPie/P_20171214_141206_2058037049.jpg,大小为 350Kbytes。

这完全是我愚蠢的错误造成的。 在开始上传之前,我的另一个异步任务试图压缩它,但失败了。因为它,压缩图像是空的。

我通过如下记录发现了我的错误。

LOG.info("uploading filesize: " + currentPhotoPath.getSize());
Ion.with(getContext())
 ...

日志说 uploading filesize: 0

希望我的愚蠢错误能帮助到别人。