Volley 网络框架实现文件上传
2017-05-30 22:42
330 查看
1.首先自己写一个MultipartRequest类,继承自StringRequest。
import com.android.internal.http.multipart.Part;
import com.android.volley.AuthFailureError;
import com.android.volley.Response;
import com.android.volley.VolleyLog;
import com.android.volley.toolbox.StringRequest;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class MultipartRequest extends StringRequest {
private Part[] parts;
public MultipartRequest(String url, Part[] parts, Response.Listener<String> listener, Response.ErrorListener errorListener) {
super(Method.POST, url, listener, errorListener);
this.parts = parts;
}
@Override
public String getBodyContentType() {
return "multipart/form-data; boundary=" + Part.getBoundary();
}
@Override
public byte[] getBody() throws AuthFailureError {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
Part.sendParts(baos, parts);
} catch (IOException e) {
VolleyLog.e(e, "error when sending parts to output!");
}
return baos.toByteArray();
}
}
2.使用方法
//构造参数列表
List<Part> partList = new ArrayList<Part>();
partList.add(new StringPart("username", "hellfire",“UTF-8”));
partList.add(new StringPart("email", "ouyangjun@aliyun.com",“UTF-8”));
try {
partList.add(new FilePart("photo", new File("/mnt/sdcard/Test/hellfire.jpg")));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
//获取队列
RequestQueue requestQueue = Volley.newRequestQueue(this);
String url = "http://test/profileUpdate.do";
//生成请求
MultipartRequest profileUpdateRequest = new MultipartRequest(url, partList.toArray(new Part[partList.size()]), new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//处理成功返回信息
String info = response.substring(0, 20);
Toast.makeText(getApplication(), info, Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//处理失败错误信息
Log.e("MultipartRequest", error.getMessage(), error);
Toast.makeText(getApplication(), error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
//将请求加入队列
requestQueue.add(profileUpdateRequest);
import com.android.internal.http.multipart.Part;
import com.android.volley.AuthFailureError;
import com.android.volley.Response;
import com.android.volley.VolleyLog;
import com.android.volley.toolbox.StringRequest;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class MultipartRequest extends StringRequest {
private Part[] parts;
public MultipartRequest(String url, Part[] parts, Response.Listener<String> listener, Response.ErrorListener errorListener) {
super(Method.POST, url, listener, errorListener);
this.parts = parts;
}
@Override
public String getBodyContentType() {
return "multipart/form-data; boundary=" + Part.getBoundary();
}
@Override
public byte[] getBody() throws AuthFailureError {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
Part.sendParts(baos, parts);
} catch (IOException e) {
VolleyLog.e(e, "error when sending parts to output!");
}
return baos.toByteArray();
}
}
2.使用方法
//构造参数列表
List<Part> partList = new ArrayList<Part>();
partList.add(new StringPart("username", "hellfire",“UTF-8”));
partList.add(new StringPart("email", "ouyangjun@aliyun.com",“UTF-8”));
try {
partList.add(new FilePart("photo", new File("/mnt/sdcard/Test/hellfire.jpg")));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
//获取队列
RequestQueue requestQueue = Volley.newRequestQueue(this);
String url = "http://test/profileUpdate.do";
//生成请求
MultipartRequest profileUpdateRequest = new MultipartRequest(url, partList.toArray(new Part[partList.size()]), new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//处理成功返回信息
String info = response.substring(0, 20);
Toast.makeText(getApplication(), info, Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//处理失败错误信息
Log.e("MultipartRequest", error.getMessage(), error);
Toast.makeText(getApplication(), error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
//将请求加入队列
requestQueue.add(profileUpdateRequest);
相关文章推荐
- Android网络通信框架Volley——自定义Request(Get、Post、文件上传)
- Android Volley网络请求框架 实现post方法并带Map参数上传
- Android Volley网络请求框架 实现post方法并带Map参数上传
- Android Volley网络请求框架 实现post方法并带Map参数上传
- Android 利用an框架快速实现网络请求(含下载上传文件)
- FileUpload框架实现文件上传(多个文件)和下载
- 谷歌Volley网络框架讲解——HttpStack及其实现类
- Struts2 框架实现多文件上传下载
- 用COS实现文件上传(非原创,网络收集)
- 利用resteasy框架构建rest webservice----第三波:实现文件上传---非form提交方式(实例、教程)
- 使用Zend框架实现PHP文件上传(1)
- .NET将文件上传到网络共享服务器的方法(已验证实现)
- 利用resteasy框架构建rest webservice----第三波:实现文件上传---非form提交方式(实例、教程)
- JAVA应用XFire框架来实现WebServie的大文件传输功能之二(上传)
- FileUpload框架实现文件上传(多个文件)和下载
- 利用ASIHttp实现文件的下载、上传和网络状态的监控
- 关于jQuery在Asp.Net Mvc 框架下Ajax文件上传的实现
- myeclipse10 swing/matisse 实现文件上传(非网络环境)
- ASP.NET设计网络硬盘之上传文件实现代码
- Struts2 框架实现多文件上传下载