文件上传的http请求类(zip文件)
这篇博文主要针对上一篇ZipControl对文件进行压缩与解压的方法来写的。
帮助类如下:
package com.chukong.cocosplay.client;import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;import android.util.Log;/*** 上传文件到服务器* * @author henry**/
public class HttpRequesterFile {private static final String TAG = "uploadFile";private static final int TIME_OUT = 100 * 1000; // 超时时间private static final String CHARSET = "utf-8"; // 设置编码/*** android上传文件到服务器* * @param file* 需要上传的文件* @param RequestURL* 请求的rul* @return 返回响应的内容* * [urlRequest setHTTPMethod:@"POST"];[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Accept"];[urlRequest setValue:@"multipart/form-data; boundary=heima" forHTTPHeaderField:@"Content-Type"];NSMutableData * body = [NSMutableData data];NSData * data = [NSData dataWithContentsOfFile:createPath];// 2> 文件参数[body appendData:HMEncode(@"--heima\r\n")];[body appendData:HMEncode(@"Content-Disposition: form-data; name=\"file\"; filename=\"test123.png\"\r\n")];[body appendData:HMEncode(@"Content-Type: application/zip\r\n")];[body appendData:HMEncode(@"\r\n")];[body appendData:data];[body appendData:HMEncode(@"\r\n")];// 3> 结束标记 :参数结束的标记[body appendData:HMEncode(@"--heima--\r\n")];[urlRequest setHTTPBody:body];*/public static String uploadFile(File file, String RequestURL) {String result = null;String BOUNDARY = "heima"; // 边界标识 随机生成String PREFIX = "--", LINE_END = "\r\n";String CONTENT_TYPE = "multipart/form-data"; // 内容类型try {URL url = new URL(RequestURL);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setReadTimeout(TIME_OUT);conn.setConnectTimeout(TIME_OUT);conn.setDoInput(true); // 允许输入流conn.setDoOutput(true); // 允许输出流conn.setUseCaches(false); // 不允许使用缓存conn.setRequestMethod("POST"); // 请求方式conn.setRequestProperty("Charset", CHARSET); // 设置编码conn.setRequestProperty("connection", "keep-alive");conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary="+ BOUNDARY);if (file != null) {/*** 当文件不为空,把文件包装并且上传*/DataOutputStream dos = new DataOutputStream(conn.getOutputStream());StringBuffer sb = new StringBuffer();sb.append(PREFIX);sb.append(BOUNDARY);sb.append(LINE_END);/*** 这里重点注意: name里面的值为服务器端需要key 只有这个key 才可以得到对应的文件* filename是文件的名字,包含后缀名的 比如:abc.png*/sb.append("Content-Disposition: form-data; name=\"file\"; filename=\""+ file.getName() + "\"" + LINE_END);sb.append("Content-Type: application/zip" + LINE_END);sb.append(LINE_END);dos.write(sb.toString().getBytes());InputStream is = new FileInputStream(file);byte[] bytes = new byte[1024 * 1024];int len = 0;while ((len = is.read(bytes)) != -1) {dos.write(bytes, 0, len);}is.close();dos.write(LINE_END.getBytes());byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINE_END).getBytes();dos.write(end_data);dos.flush();/*** 获取响应码 200=成功 当响应成功,获取响应的流*/int res = conn.getResponseCode();Log.e(TAG, "response code:" + res);// if(res==200)// {Log.e(TAG, "request success");InputStream input = conn.getInputStream();StringBuffer sb1 = new StringBuffer();int ss;while ((ss = input.read()) != -1) {sb1.append((char) ss);}result = sb1.toString();result = new String(result.getBytes("iso8859-1"), "utf-8");Log.e(TAG, "result : " + result);}} catch (MalformedURLException e) {e.printStackTrace();return null;} catch (IOException e) {e.printStackTrace();return null;}return result;}}
其中要注意的是sb.append()方法拼接的参数。上面代码由于是我们服务器所规定的参数拼接。如有需要大家可以自行改之。其中
sb.append("Content-Type: application/zip" + LINE_END);
由于我是上传的zip文件,所以这里contenttype是application/zip
zipcontrol文件解压缩博文地址:http://blog.csdn.net/qq_17387361/article/details/53159752
文件上传的http请求类(zip文件)相关推荐
- 原生Servlet文件上传和下载Servlet多个文件上传
2019独角兽企业重金招聘Python工程师标准>>> 转载:原文连接https://blog.csdn.net/HaHa_Sir/article/details/81744629 ...
- SpringBoot 文件上传 通过Content-Type和文件头判断文件类型
SpringBoot 文件上传 通过Content-Type和文件头判断文件类型 一.关于MIME MIME的全称是Multipurpose Internet Mail Extensions,即多用途 ...
- 文件上传成功后找不到文件位置
上传文件后找不到文件位置 在文件上传成功后找不到文件所在的位置是Tomcat部署问题,部署在war下在idea工作空间是找不到上传的文件的 @RequestMapping("/fileupl ...
- 自学Python第二十二天- Django框架(三) AJAX、文件上传、POST 请求类型之间的转换、多APP开发、iframe、验证码、分页器、类视图、中间件、信号、日志、缓存、celery异步
Django官方文档 django 使用 AJAX django 项目中也可以使用 ajax 技术 前端 前端和其他 web 框架一样,需要注意的是,django 接收 POST 请求时,需要 csr ...
- elementui中同时上传多个文件_2019-12-19 element-ui文件上传 一次请求上传多个文件...
最近在做项目的时候有一个需求,需要导入word文档,并且需要支持多选.element-ui 的 upload 组件支持多选文件,只需要配置参数 multiple 为 true 即可.但是这个组件默认会 ...
- Play框架文件上传Upload、FileUpload类使用详解
最近做一个前后台分离的项目,要用到前端页面传递文件对象给后端,就研究了一下框架中自带的类Upload接口.FileUpload类. 1. 后端的控制器能够接收到play.mvc.Http.Reques ...
- php单文件上传实例,php封装的单文件(图片)上传类完整实例
本文实例讲述了php封装的单文件(图片)上传类.分享给大家供大家参考,具体如下: //封装php中的单文件(图片)上传类 /* //参数1:$file 文件数组 5个属性值 name,type,siz ...
- 将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录
将文件上传至ftp服务器,传入File对象,将文件上传至ftp服务器 需要配置修改的点: 1. 服务器ip端口(服务器ip 端口22/21). 2. 服务器账号密码(服务器登录用户名密码). 3. 上 ...
- Asp.NET大文件上传组件开发总结(二)---提取文件内容
不知地震什么时候结束,为了给老婆小孩守夜,看来还不能睡,那就把第二篇也写了吧,只是不知对大家有没有用哟. 为了提供文件内容,我们需要首先需确定客户请求中发送的有文件内容,然后确定文件内容的位置.这部分 ...
最新文章
- 你绝没用过的一款高级空间可视化工具
- Java爬虫--json数据处理:JSONObject的使用
- JVM--类加载机制
- wps怎么旋转页面_用WPS文字编辑一份试卷,详细教程来了,老师们赶快收藏吧
- 【转】JPA、Hibernate和Mybatis区别和总结
- axis2 默认端口_使用axis2创建webservice
- scala 字段覆盖_Scala中的字段覆盖
- vue keep-alive缓存页面切换后不触发created等用什么检测页面切换
- 【 全干货 】5 分钟带你看懂 Docker ! 1
- 文博项目-终端网口测试-软件
- 带你看论文丨全局信息对于图网络文档解析的影响
- Ubuntu下apache配置文件路径
- Java并发编程的艺术(八)——闭锁、同步屏障、信号量详解
- 记录每天学习的新知识: Android 前台服务
- 码~ps基本概念知识
- tig--颠覆 Git 命令使用体验的神器
- 百度地图Web API Python模块
- 部分主元法求解线性方程组
- ExtJS EditorGridPanel 示例之xml格式Store前后台增删改查
- std在汇编语言是什么指令_汇编语言的所有指令