I am using Volley for calling web request for my app. But as i am Volley for first time. I just want to know that how to upload image/video media data via volley using multipart.

I searched for it many sites, I got some results over

How to send a “multipart/form-data” POST in Android with Volley

But, these methods does’nt look good or efficients. So, Please help me that how to upload media data using volley. Or i should not use Volley, and should go for the previous manual approach

Anyway, all thoughts and answers are extremely appreciated. Thank you for your help.

原文链接

解决方案:

import java.io.ByteArrayOutputStream;import java.io.File;import java.io.IOException;import java.util.Map;import org.apache.http.HttpEntity;import org.apache.http.entity.mime.HttpMultipartMode; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.entity.mime.content.FileBody; import com.android.volley.AuthFailureError;import com.android.volley.NetworkResponse;import com.android.volley.Request;import com.android.volley.Response;import com.android.volley.VolleyLog;public class MultipartRequest extends Request<String> {// private MultipartEntity entity = new MultipartEntity(); MultipartEntityBuilder entity = MultipartEntityBuilder.create();HttpEntity httpentity;private static final String FILE_PART_NAME = "file";private final Response.Listener<String> mListener;private final File mFilePart;private final Map<String, String> mStringPart;public MultipartRequest(String url, Response.ErrorListener errorListener,        Response.Listener<String> listener, File file,        Map<String, String> mStringPart) {    super(Method.POST, url, errorListener);    mListener = listener;    mFilePart = file;    this.mStringPart = mStringPart;    entity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);    buildMultipartEntity(); } public void addStringBody(String param, String value) {    mStringPart.put(param, value);} private void buildMultipartEntity() {     entity.addPart(FILE_PART_NAME, new FileBody(mFilePart));    for (Map.Entry<String, String> entry : mStringPart.entrySet()) {        entity.addTextBody(entry.getKey(), entry.getValue());    } } @Override public String getBodyContentType() {    return httpentity.getContentType().getValue();} @Override public byte[] getBody() throws AuthFailureError {    ByteArrayOutputStream bos = new ByteArrayOutputStream();    try {         httpentity = entity.build();        httpentity.writeTo(bos);    } catch (IOException e) {        VolleyLog.e("IOException writing to ByteArrayOutputStream");    }     return bos.toByteArray();} @Override protected Response<String> parseNetworkResponse(NetworkResponse response) {    return Response.success("Uploaded", getCacheEntry());} @Override protected void deliverResponse(String response) {    mListener.onResponse(response);} } 

注意需要在http://hc.apache.org/downloads.cgi 下载httpcomponents-client-*
解压之后,导入以下三个jar包

httpmime, httpcore and httpclient

更多相关文章

  1. Android(安卓)Studio 导入Eclipse建立的android项目问题
  2. windows上 android 21.1版本ADT环境搭建
  3. 在Eclipse中导入整个Android系统代码
  4. android edittext 去边框
  5. Android(一)开发环境的搭建
  6. Jetpack学习(二)——databinding(2)
  7. android EditText+ListView的组合(类似于AutoCompleteTextView)
  8. Android(安卓)复习笔记之图解Activity的4种加载模式
  9. 导入android studio 项目错误:Error:(1, 0) Plugin with id 'com.

随机推荐

  1. 关于AndroidStudio中提示cannot resolve
  2. eclipse转用android studio——常用快捷
  3. Android多窗口分屏(原生方法)
  4. JS唤醒Android APP(包括在外部浏览器和We
  5. Android中如何有效的加载图片
  6. SmartRefreshLayout集成笔记,实现下拉刷新
  7. Android Camera进行拍照
  8. Android设置屏幕旋转后保存数据
  9. Android中的一些小知识点
  10. android 打开系统相册得到路径 上传图片