Volley上传图片
来源:互联网 发布:des算法实验报告 编辑:程序博客网 时间:2024/05/29 18:22
Volley以流的形式上传图片,参考了某大神代码
public class PostUploadRequest extends Request {
public static final String TAG = PostUploadRequest.class.getSimpleName();private static final String CHARSET = "utf-8"; //设置编码String BOUNDARY = UUID.randomUUID().toString(); //边界标识 随机生成String PREFIX = "--", LINE_END = "\r\n";String CONTENT_TYPE = "multipart/form-data"; //内容类型/** * 正确数据的时候回掉用 */private Response.Listener<JSONObject> mListener ;/*请求 数据通过参数的形式传入*/private List<FormImage> mListItem ;public PostUploadRequest(int method, String url,List<FormImage> listItem, Response.Listener<JSONObject> listener, Response.ErrorListener errorListener) { super(method, url, errorListener); this.mListener = listener ; setShouldCache(false); mListItem = listItem ; setRetryPolicy(new DefaultRetryPolicy(5000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));}public PostUploadRequest(int method, String url,FormImage formImage, Response.Listener<JSONObject> listener, Response.ErrorListener errorListener) { super(method, url, errorListener); ArrayList<FormImage> formImages = new ArrayList<FormImage>(); formImages.add(formImage); this.mListener = listener ; setShouldCache(false); mListItem = formImages ; setRetryPolicy(new DefaultRetryPolicy(5000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));}/** * 这里开始解析数据 * @param response Response from the network * @return */@Overrideprotected Response<JSONObject> parseNetworkResponse(NetworkResponse response) { try { String jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers, CHARSET)); return Response.success(new JSONObject(jsonString), HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } catch (JSONException je) { return Response.error(new ParseError(je)); }}@Overrideprotected void deliverResponse(JSONObject response) { mListener.onResponse(response);}@Overridepublic byte[] getBody() throws AuthFailureError { if (mListItem == null||mListItem.size() == 0){ return super.getBody() ; } ByteArrayOutputStream bos = new ByteArrayOutputStream() ; int N = mListItem.size() ; FormImage formImage ; for (int i = 0; i < N ;i++){ formImage = mListItem.get(i) ; StringBuffer sb = new StringBuffer(); sb.append(PREFIX); sb.append(BOUNDARY); sb.append(LINE_END); // 相关参数需与后台一致 // sb.append("Content-Disposition: form-image; name=\"file\"; filename=\"" + formImage.getFileName() + "\"" + LINE_END); sb.append("Content-Disposition: form-data; name=\"file\"; filename=\"" + formImage.getFileName() + "\"" + LINE_END); sb.append("Content-Type: application/octet-stream; charset=" + CHARSET + LINE_END); sb.append(LINE_END); try { bos.write(sb.toString().getBytes(CHARSET)); bos.write(formImage.getValue()); } catch (IOException e) { e.printStackTrace(); } } try { bos.write(LINE_END.getBytes(CHARSET)); byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINE_END).getBytes(CHARSET); bos.write(end_data); bos.flush(); } catch (IOException e) { e.printStackTrace(); } return bos.toByteArray();}@Overridepublic String getBodyContentType() { return CONTENT_TYPE + ";boundary=" + BOUNDARY;}private HashMap<String,String> map;public void setHeader(HashMap<String,String> map){ this.map = map;}@Overridepublic Map<String, String> getHeaders() throws AuthFailureError { if(null != map){ return map; } return super.getHeaders();}
}
public class FormImage {
private String fileName ;private Bitmap bitmap ;public void setFileName(String fileName){ this.fileName = fileName;}public String getFileName() { return fileName;}public void setBitmap(Bitmap bitmap ){ this.bitmap = bitmap;}public Bitmap getBitmap() { return bitmap;}public byte[] getValue() { ByteArrayOutputStream bos = new ByteArrayOutputStream() ; bitmap.compress(Bitmap.CompressFormat.JPEG,80,bos) ; return bos.toByteArray();}
0 0
- Volley上传图片
- Volley实现图片上传
- Volley 上传图片
- Volley 上传图片
- Volley图片上传
- Volley上传图片
- android Volley 上传文件上传图片
- android Volley 上传文件上传图片
- Volley 自定义上传图片提交数据
- Android 使用volley上传图片、多张图片
- 设置volley请求次数,上传图片显示上传两次,设置volley默认请求次数
- 上传一张或多张图片(使用volley框架)
- Bmob平台实现头像上传+Volley框架加载图片url
- Android:Volley实现参数,字符数组,文件,图片的上传
- Android Volley框架定制PostUploadRequest上传文件(图片)
- Android Volley框架定制PostUploadRequest上传文件(图片)
- 使用volley上传图片,一个参数多张图、多张图片多张图,亲测有效哦
- 使用volley上传图片,一个参数多张图、多张图片多张图
- 一直在用卓老师建站后感觉
- arcgis for android 地图上画框划线
- Redis安装部署
- Apache+mod_jk+Tomcat负载均衡服务器配置
- 汇编学习笔记---2.3 CS和IP
- Volley上传图片
- 第二章:Dubbo整合maven+spring+springmvc+mybatis之服务提供者搭建
- 各种移动GPU压缩纹理的使用方法
- vim 插件安装
- 隐藏TabBar的一些方法
- IOS--NSString(字符串截取)
- OSPF路由协议分析
- cmd 下连接oracle 并且导出表
- Android学习笔记(一) View、ViewGroup的测量绘制