文档章节

上传带图片的Http请求

SuShine
 SuShine
发布于 2015/06/25 15:28
字数 259
阅读 21
收藏 0
/**
	 * 上传带图片的http请求
	 * 
	 * @param murl网址
	 * @param map
	 *            参数对 主要不要包括图片
	 * @param path
	 *            图片路径 也可以是其他格式 自行做
	 * @return
	 * @throws Exception
	 */
	static public String post(String murl, HashMap<String, String> map,
			String path) throws Exception {
		File file = new File(path);
		String filename = path.substring(path.lastIndexOf("/"));
		// String filename = Str.md5(path);
		StringBuilder sb = new StringBuilder();
		if (null != map) {
			for (Map.Entry<String, String> entry : map.entrySet()) {
				sb.append("--" + BOUNDARY + "\r\n");
				sb.append("Content-Disposition: form-data; name=\""
						+ entry.getKey() + "\"" + "\r\n");
				sb.append("\r\n");
				sb.append(entry.getValue() + "\r\n");

			}
		}

		sb.append("--" + BOUNDARY + "\r\n");
		sb.append("Content-Disposition: form-data; name=\"image\"; filename=\""
				+ filename + "\"" + "\r\n");

		sb.append("Content-Type: image/pjpeg" + "\r\n");
		sb.append("\r\n");

		byte[] before = sb.toString().getBytes("UTF-8");
		byte[] after = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("UTF-8");

		URL url = new URL(murl);
		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
		conn.setRequestMethod("POST");
		conn.setRequestProperty("Content-Type",
				"multipart/form-data; boundary=" + BOUNDARY);

		conn.setRequestProperty("Authorization",
				"Bearer " + Douban.getAccessToken());
		conn.setRequestProperty("Content-Length",
				String.valueOf(before.length + file.length() + after.length));
		conn.setRequestProperty("HOST", url.getHost());
		conn.setDoOutput(true);

		OutputStream out = conn.getOutputStream();
		InputStream in = new FileInputStream(file);

		out.write(before);

		byte[] buf = new byte[1024];
		int len;
		while ((len = in.read(buf)) != -1)
			out.write(buf, 0, len);

		out.write(after);

		in.close();
		out.close();
		MLog.e(inputStream2String(conn.getInputStream()) + "");
		return conn.getContent().toString();

	}

	/**
	 * is转String
	 * 
	 * @param in
	 * @return
	 * @throws IOException
	 */
	public static String inputStream2String(InputStream in) throws IOException {
		StringBuffer out = new StringBuffer();
		byte[] b = new byte[4096];
		for (int n; (n = in.read(b)) != -1;) {
			out.append(new String(b, 0, n));
		}
		return out.toString();
	}

本文转载自:http://blog.csdn.net/sfshine/article/details/8364609

共有 人打赏支持
SuShine
粉丝 124
博文 518
码字总数 150044
作品 0
朝阳
后端工程师
私信 提问
Android 中判断网络连接和GPS是否可用及HTTPCLIENT使用

大家知道Google支持和发布的Android移动操作系统,主要是为了使其迅速占领移动互联网的市场份额,所谓移动互联网当然也是互联网了,凡是涉及互联网的任何软件任何程序都少不了联网模块的开发...

xztelecomlcs
2017/03/14
0
0
合成图 + 跨域名静态文件服务器(cookie-free domains)

通过“合成图” 和 “跨域名静态文件服务器” 优化访问速度 http://www.wangchao123.com/2009/07/25/361 facebooke 合成图 google 和 face booke 的图标合成图 合成图方法 浏览一些大型专业网...

飞龙栖息地
2011/08/29
0
0
小程序开发:上传图片到腾讯云

这是小程序开发第二篇,主要介绍如何上传图片到腾讯云,之所以选择腾讯云,是因为腾讯云免费空间大😂 准备工作 上传图片主要是将图片上传到腾讯云对象存储(COS)。 要使用对象存储 API,需...

goodspeed
2017/08/27
0
0
nginx报错“No input file specified”

最近买了台海外的vps做vpn,使用一键lnmp后改了一下nginx的配置文件,测试php页面发现返回“No input file specified”,查站点日志报错如下状态码是404,提示找不到该文件,但在站点目录下确...

dorebmoon
2017/12/15
0
0
图片存储架构学习:独立的图片服务器,给爱一个独立的空间

前言 去年我凭着对网站架构的浓厚兴趣陆陆续续给大家分享了不少大型网站架构的经典案例,但是大部分都只是介绍了大概,并没有深入地研究,有兴趣的朋友可以去我博客的网站架构分类下学习讨论...

mj4738
2013/01/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

AMD重回服务器:Oracle甲骨文宣布将使用AMD EPYC处理器

导读 AMD的EPYC的推出,让AMD重新有了在服务器级,数据中心级等大型政企领域的竞争机会。如今,很多云服务商开始使用EPYC处理器,Oracle也在近期宣布了将使用EPYC处理器的消息。 甲骨文也公布...

问题终结者
27分钟前
0
0
Maven 依赖范围(Dependency Scope)

Dependency Scope Dependency scope is used to limit the transitivity of a dependency, and also to affect the classpath used for various build tasks. 依赖范围用于限制依赖项的传递性......

晨猫
43分钟前
1
0
细述hbase协处理器

1.起因(Why HBase Coprocessor) HBase作为列族数据库最经常被人诟病的特性包括:无法轻易建立“二级索引”,难以执行求和、计数、排序等操作。比如,在旧版本的(<0.92)Hbase中,统计数据表的...

微笑向暖wx
57分钟前
1
0
【实践】如何获得Rinkeby网络的测试以太币

当把智能合约部署到Rinkeby Test Network时,需要获得测试以太币。其网络获取测试以太币的方法同Ropsten Test Network有些不同,本文详细讲解一下。 1 访问网站 访问rinkeby网络(https://w...

HiBlock
今天
1
0
Logback中如何自定义灵活的日志过滤规则

当我们需要对日志的打印要做一些范围的控制的时候,通常都是通过为各个Appender设置不同的Filter配置来实现。在Logback中自带了两个过滤器实现:ch.qos.logback.classic.filter.LevelFilter...

程序猿DD
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部