使用Ion上传Android文件,但上传文件为空
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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
来自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文件,但上传文件为空的主要内容,如果未能解决你的问题,请参考以下文章