我尝试做一件我认为相对简单的事情:使用Android SDK将图像上传到服务器。我找到了很多示例代码:
http://linklens.blogspot.com/2009/06/android-multipart-upload.html
但是两者对我都不起作用。我遇到的困惑是什么是真正需要进行多部分请求的东西。有没有最简单的方法来实现Android的多部分上传(上传图片)?
非常感谢任何帮助和建议!
我尝试做一件我认为相对简单的事情:使用Android SDK将图像上传到服务器。我找到了很多示例代码:
http://linklens.blogspot.com/2009/06/android-multipart-upload.html
但是两者对我都不起作用。我遇到的困惑是什么是真正需要进行多部分请求的东西。有没有最简单的方法来实现Android的多部分上传(上传图片)?
非常感谢任何帮助和建议!
try {
Ion.with(this, "http://www.urlthatyouwant.com/post/page")
.setMultipartParameter("field1", "This is field number 1")
.setMultipartParameter("field2", "Field 2 is shorter")
.setMultipartFile("imagefile",
new File(Environment.getExternalStorageDirectory()+"/testfile.jpg"))
.asString()
.setCallback(new FutureCallback<String>() {
@Override
public void onCompleted(Exception e, String result) {
System.out.println(result);
}});
} catch(Exception e) {
// Do something about exceptions
System.out.println("exception: " + e);
}
这将异步运行,一旦收到响应,回调将在UI线程中执行。我强烈建议您前往https://github.com/koush/ion获取更多信息。
为了后人,我没有看到 okhttp 被提到。 相关帖子。
基本上,您可以使用 MultipartBody.Builder 构建请求体,并将其作为请求进行提交。
Kotlin 示例:
val body = MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart(
"file",
file.getName(),
RequestBody.create(MediaType.parse("image/png"), file)
)
.addFormDataPart("timestamp", Date().time.toString())
.build()
val request = Request.Builder()
.url(url)
.post(body)
.build()
httpClient.newCall(request).enqueue(object : okhttp3.Callback {
override fun onFailure(call: Call?, e: IOException?) {
...
}
override fun onResponse(call: Call?, response: Response?) {
...
}
})