这篇博文主要针对上一篇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文件)相关推荐

  1. 原生Servlet文件上传和下载Servlet多个文件上传

    2019独角兽企业重金招聘Python工程师标准>>> 转载:原文连接https://blog.csdn.net/HaHa_Sir/article/details/81744629 ...

  2. SpringBoot 文件上传 通过Content-Type和文件头判断文件类型

    SpringBoot 文件上传 通过Content-Type和文件头判断文件类型 一.关于MIME MIME的全称是Multipurpose Internet Mail Extensions,即多用途 ...

  3. 文件上传成功后找不到文件位置

    上传文件后找不到文件位置 在文件上传成功后找不到文件所在的位置是Tomcat部署问题,部署在war下在idea工作空间是找不到上传的文件的 @RequestMapping("/fileupl ...

  4. 自学Python第二十二天- Django框架(三) AJAX、文件上传、POST 请求类型之间的转换、多APP开发、iframe、验证码、分页器、类视图、中间件、信号、日志、缓存、celery异步

    Django官方文档 django 使用 AJAX django 项目中也可以使用 ajax 技术 前端 前端和其他 web 框架一样,需要注意的是,django 接收 POST 请求时,需要 csr ...

  5. elementui中同时上传多个文件_2019-12-19 element-ui文件上传 一次请求上传多个文件...

    最近在做项目的时候有一个需求,需要导入word文档,并且需要支持多选.element-ui 的 upload 组件支持多选文件,只需要配置参数 multiple 为 true 即可.但是这个组件默认会 ...

  6. Play框架文件上传Upload、FileUpload类使用详解

    最近做一个前后台分离的项目,要用到前端页面传递文件对象给后端,就研究了一下框架中自带的类Upload接口.FileUpload类. 1. 后端的控制器能够接收到play.mvc.Http.Reques ...

  7. php单文件上传实例,php封装的单文件(图片)上传类完整实例

    本文实例讲述了php封装的单文件(图片)上传类.分享给大家供大家参考,具体如下: //封装php中的单文件(图片)上传类 /* //参数1:$file 文件数组 5个属性值 name,type,siz ...

  8. 将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录

    将文件上传至ftp服务器,传入File对象,将文件上传至ftp服务器 需要配置修改的点: 1. 服务器ip端口(服务器ip 端口22/21). 2. 服务器账号密码(服务器登录用户名密码). 3. 上 ...

  9. Asp.NET大文件上传组件开发总结(二)---提取文件内容

    不知地震什么时候结束,为了给老婆小孩守夜,看来还不能睡,那就把第二篇也写了吧,只是不知对大家有没有用哟. 为了提供文件内容,我们需要首先需确定客户请求中发送的有文件内容,然后确定文件内容的位置.这部分 ...

最新文章

  1. 你绝没用过的一款高级空间可视化工具
  2. Java爬虫--json数据处理:JSONObject的使用
  3. JVM--类加载机制
  4. wps怎么旋转页面_用WPS文字编辑一份试卷,详细教程来了,老师们赶快收藏吧
  5. 【转】JPA、Hibernate和Mybatis区别和总结
  6. axis2 默认端口_使用axis2创建webservice
  7. scala 字段覆盖_Scala中的字段覆盖
  8. vue keep-alive缓存页面切换后不触发created等用什么检测页面切换
  9. 【 全干货 】5 分钟带你看懂 Docker ! 1
  10. 文博项目-终端网口测试-软件
  11. 带你看论文丨全局信息对于图网络文档解析的影响
  12. Ubuntu下apache配置文件路径
  13. Java并发编程的艺术(八)——闭锁、同步屏障、信号量详解
  14. 记录每天学习的新知识: Android 前台服务
  15. 码~ps基本概念知识
  16. tig--颠覆 Git 命令使用体验的神器
  17. 百度地图Web API Python模块
  18. 部分主元法求解线性方程组
  19. ExtJS EditorGridPanel 示例之xml格式Store前后台增删改查
  20. std在汇编语言是什么指令_汇编语言的所有指令

热门文章

  1. 2022年12月电子学会青少年软件编程Scratch(二级)等级考试真题解析
  2. FPGA内部振荡器使用
  3. Linux之(6)Kconfig基础知识
  4. webshell扫描工具
  5. 忘记oracle管理员密码了,解决oracle数据库忘记系统管理员密码
  6. PID算法详细解析——基于单片机
  7. 自动驾驶专题介绍 ———— 惯性导航
  8. 图像的二维傅里叶变换频谱图特点研究
  9. ExpandableListView实现可展开的ListView
  10. Python程序设计快速入门01