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

时间:2017-12-14 05:48:20

标签: android file-upload ion

我使用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

enter image description here

来自whireshark,Ion没有正确发送文件 所以我检查了我的设备当地的照片是否有效 上传照片位于/storage/emulated/0/Pictures/DigitalPie/P_20171214_141206_2058037049.jpg,尺寸为350K字节。

1 个答案:

答案 0 :(得分:0)

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

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

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

日志说uploading filesize: 0

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