该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

public class HttpRequester {

/**

* 直接通过HTTP 协议提交数据到服务器,实现如下面表单提交功能:

*

ACTION="http://192.168.0.200:8080/ssi/fileload/test.do" enctype="multipart/form-data">

* @param actionUrl 上传路径(注:避免使用localhost 或127.0.0.1这样的路径

测试, 因为它会指向手机模拟器, 你可以使用http://www.itcast.cn 或

http://192.168.1.10:8080这样的路径测试)

* @param params 请求参数key 为参数名,value 为参数值

* @param file 上传文件

*/

public static String post(String actionUrl, Map params, FormFile[]

files) {

try {

String BOUNDARY = "---------7d4a6d158c9"; //数据分隔线

String MULTIPART_FORM_DATA = "multipart/form-data";

URL url = new URL(actionUrl);

HttpURLConnection conn = (HttpURLConnection)

url.openConnection();

conn.setConnectTimeout(5* 1000);

conn.setDoInput(true);//允许输入

conn.setDoOutput(true);//允许输出

conn.setUseCaches(false);//不使用Cache

conn.setRequestMethod("POST");

conn.setRequestProperty("Connection", "Keep-Alive");

conn.setRequestProperty("Charset", "UTF-8");

conn.setRequestProperty("Content-Type", MULTIPART_FORM_DATA

+ "; boundary=" + BOUNDARY);

StringBuilder sb = new StringBuilder();

for (Map.Entry entry : params.entrySet()) {//构建表单

字段内容

sb.append("--");

sb.append(BOUNDARY);

sb.append("\r\n");

sb.append("Content-Disposition: form-data; name=\""+

entry.getKey() + "\"\r\n\r\n");

sb.append(entry.getValue());

sb.append("\r\n");

}

DataOutputStream outStream = new

DataOutputStream(conn.getOutputStream());

outStream.write(sb.toString().getBytes());//发送表单字段数据

for(FormFile file : files){//发送文件数据

StringBuilder split = new StringBuilder();

split.append("--");

split.append(BOUNDARY);

split.append("\r\n");

split.append("Content-Disposition: form-data;name=\""+

file.getFormname()+"\";filename=\""+ file.getFilname() + "\"\r\n");

split.append("Content-Type: "+ file.getContentType()+"\r\n\r\n");

outStream.write(split.toString().getBytes());

if(file.getInStream()!=null){

byte[] buffer = new byte[1024];

int len = 0;

while((len = file.getInStream().read(buffer))!=-1){

outStream.write(buffer, 0, len);

}

file.getInStream().close();

}else{

outStream.write(file.getData(), 0, file.getData().length);

}

outStream.write("\r\n".getBytes());

}

byte[] end_data = ("--" + BOUNDARY + "--\r\n").getBytes();//数据结

束标志

outStream.write(end_data);

outStream.flush();

int cah = conn.getResponseCode();

if (cah != 200) throw new RuntimeException("请求url 失败");

InputStream is = conn.getInputStream();

int ch;

StringBuilder b = new StringBuilder();

while( (ch = is.read()) != -1 ){

b.append((char)ch);

}

outStream.close();

conn.disconnect();

return b.toString();

} catch (Exception e) {

throw new RuntimeException(e);

}

}

/**

* 提交数据到服务器

* @param actionUrl 上传路径(注:避免使用localhost 或127.0.0.1这样的路径

测试, 因为它会指向手机模拟器, 你可以使用http://www.itcast.cn 或

http://192.168.1.10:8080这样的路径测试)

* @param params 请求参数key 为参数名,value 为参数值

* @param file 上传文件

*/

public static String post(String actionUrl, Map params, FormFile

file) {

return post(actionUrl, params, new FormFile[]{file});

}

public static byte[] postFromHttpClient(String path, Map params,

String encode) throws Exception{

List formparams = new ArrayList();// 用

于存放请求参数

for(Map.Entry entry : params.entrySet()){

formparams.add(new BasicNameValuePair(entry.getKey(),

entry.getValue()));

}

UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams,

"UTF-8");

HttpPost httppost = new HttpPost(path);

httppost.setEntity(entity);

HttpClient httpclient = new DefaultHttpClient();//看作是浏览器

HttpResponse response = httpclient.execute(httppost);//发送post 请求

return StreamTool.readInputStream(response.getEntity().getContent());

}

/**

* 发送请求

* @param path 请求路径

* @param params 请求参数key 为参数名称value 为参数值

* @param encode 请求参数的编码

*/

public static byte[] post(String path, Map params, String encode)

throws Exception{

//String params = "method=save&name="+ URLEncoder.encode(" 老毕",

"UTF-8")+ "&age=28&";//需要发送的参数

StringBuilder parambuilder = new StringBuilder("");

if(params!=null && !params.isEmpty()){

for(Map.Entry entry : params.entrySet()){

parambuilder.append(entry.getKey()).append("=")

.append(URLEncoder.encode(entry.getValue(),

encode)).append("&");

}

parambuilder.deleteCharAt(parambuilder.length()-1);

}

byte[] data = parambuilder.toString().getBytes();

URL url = new URL(path);

HttpURLConnection conn = (HttpURLConnection)url.openConnection();

conn.setDoOutput(true);//允许对外发送请求参数

conn.setUseCaches(false);//不进行缓存

conn.setConnectTimeout(5 * 1000);

conn.setRequestMethod("POST");

android客户端服务器传输,【图片】【转】通过Android 客户端上传数据到服务器【aide吧】_百度贴吧...相关推荐

  1. (0081)iOS开发之无限后台定位并上传数据到服务器

    关键词:ios 后台持续定位 iOS 后台的理解 // http://blog.csdn.net/u013773524/article/details/52153917 // http://blog. ...

  2. 百度ueditor富文本--图片保存路径的配置以及上传到远程服务器

    我们在上篇文章中学习了  上传图片的配置: 百度ueditor富文本--配置图片上传 在文章的最后 讲到  ueditor 默认设置的 保存图片的 路径 是相对路径,项目相关的. 保存的图片会放在to ...

  3. 上传文件到服务器并显示,J2EE如何实现Servlet上传文件到服务器并相应显示功能...

    J2EE如何实现Servlet上传文件到服务器并相应显示功能 发布时间:2021-07-10 11:44:54 来源:亿速云 阅读:82 作者:小新 这篇文章将为大家详细讲解有关J2EE如何实现Ser ...

  4. 扫码枪(条码枪)v1.0可以实现无焦点捕获扫码输入,并可上传数据到服务器

    扫码枪(条码枪CCSP Scan)v1.0扫可以实现无焦点捕获输入,支持串口和USB接口,并上传数据服务. github 小巧精悍,不到1M. 下载 USB接口 设置 串口 概述 1. 分为免费版和注 ...

  5. ftp上传文件与服务器的连接被重置怎么办,FTP上传文件与服务器的连接被重置

    FTP上传文件与服务器的连接被重置 内容精选 换一换 通过FTP或SFTP连接,可以对FTP或SFTP服务器抽取或加载文件,支持CSV.二进制和JSON格式.FTP和SFTP的连接参数相同. 通过FT ...

  6. android上传字符串到服务器,【图片】【转】通过Android 客户端上传数据到服务器【aide吧】_百度贴吧...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 public class HttpRequester { /** * 直接通过HTTP 协议提交数据到服务器,实现如下面表单提交功能: * ACTION= ...

  7. 云服务器上传文件怎么这么慢,百度云上传速度太慢怎么回事_百度云网盘上传速度太慢怎么解决-win7之家...

    百度云是百度推出的一项云存储服务,给用户们提供文件的网络备份.同步和分享服务,不过最近有用户发现百度云要上传资料的时候发现速度太慢了,这是怎么回事呢,针对这个问题,小编给大家讲解一下百度云网盘上传速度 ...

  8. Android 使用mqtt实例,包括接收服务器推送以及上传数据到服务器

    1.最方便的方法,使用dlc的module连接mqtt 步骤.1--导入dlc依赖和module //dlc_mqttmodule implementation project(':garbagere ...

  9. 服务器上传至云系统,上传至云服务器命令

    上传至云服务器命令 内容精选 换一换 本文介绍如何在 Linux 系统的本地机器上使用 FTP 服务,将文件从本地上传到云服务器中.已在待上传文件的云服务器中搭建 FTP 服务.如果您的云服务器为 W ...

  10. ssh怎么ftp上传文件到服务器,ssh ftp上传文件到服务器

    ssh ftp上传文件到服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分别 ...

最新文章

  1. MobileViT: 一种更小,更快,高精度的轻量级Transformer端侧网络架构(附代码实现)...
  2. 爬取动态网页(2017年年度豆瓣电影榜单)
  3. 软考-信息系统项目管理师-项目合同管理
  4. hust1347(归并排序求逆序对)
  5. 51 nod 1521 一维战舰 时间复杂度O(n),同 Codeforces 567D. One-Dimensional Battle Ships 有详细注释
  6. oracle需求分析,8-oracle_分析函数(二)
  7. php数组基础知识,PHP 数组基础知识小结
  8. HTML与CSS布局技巧总结,Html和CSS布局技巧总结(偶尔回顾回顾布局也是很有必要的)...
  9. ClassPathResource详解
  10. 音乐社交APP源码 V1.1
  11. EmmyLua For Intellij IDEA注解功能的一些用法
  12. win7 远程桌面连接
  13. canvas画圆形图片
  14. 解决AndroidStudio Locat侧边栏消失
  15. Android友盟统计
  16. Ubuntu 14.04 64 位安装 Google 的 TensorFlow
  17. Android 面试之20个常见 APP 架构常见面试题~
  18. 如何用纯 CSS 实现优惠券效果
  19. 关于三方协议不得不说的注意事项
  20. C/C++新手学习项目(三) 魔兽世界之三:开战

热门文章

  1. 思岚科技RPlidar A3激光雷达ROS源码详解
  2. ZEMAX | 如何进行序列模式公差分
  3. 【H3CTE认证和HCIE认证一样吗?】
  4. 关于驻波比(VSWR)的详细解析
  5. 计算机发展史与程序员思维
  6. opencv如何隐藏窗口
  7. 记一次阿里巴巴电话面试题
  8. QT文本文档之新建文本
  9. 计算机视觉大型攻略 —— 立体视觉(4)立体匹配算法简介与SGM
  10. 平衡二叉树的原理及实现