文档章节

Android模拟表单提交(上传文件)

军歌
 军歌
发布于 2014/02/19 09:37
字数 263
阅读 450
收藏 1

通过form表单进行上传文件


<html>
<body>
<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>



利用android api自带的httpclient进行模仿web中的form表单进行提交



public class MainActivity extends Activity {

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		new Thread() {
			public void run() {
				try {
					doUPloadFile();
				} catch (Exception e) {
					e.printStackTrace();
				}
			};
		}.start();
	}

	public HttpClient createClient() {
		HttpParams params = new BasicHttpParams();
		params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
		params.setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET, HTTP.DEFAULT_CONTENT_CHARSET);
		params.setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, true);
		params.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 30 * 1000);
		params.setParameter(CoreConnectionPNames.SO_TIMEOUT, 30 * 1000);

		SchemeRegistry schReg = new SchemeRegistry();
		schReg.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
		schReg.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
		ClientConnectionManager conMgr = new ThreadSafeClientConnManager(params, schReg);

		return new DefaultHttpClient(conMgr, params);
	}

	void doUPloadFile() throws Exception {
		// 需要上传的文件
		File file = new File("/storage/sdcard0/test.png");
		FileInputStream fis = new FileInputStream(file);
		HttpClient httpclient = createClient();
		String url = "";

		MultipartEntity me = new MultipartEntity();//需要下载第三方jar包(httpmime.jar)
		me.addPart("file", new InputStreamBody(fis, file.getName()));

		HttpPost httpPost = new HttpPost(url);
		httpPost.setEntity(me);

		HttpResponse httpResponse = httpclient.execute(httpPost);

		int code = httpResponse.getStatusLine().getStatusCode();
		log("http status code:" + code);
		if (code == HttpStatus.SC_OK) {
			String result = EntityUtils.toString(httpResponse.getEntity(), HTTP.UTF_8);
			// 上传的结果,可以使json,或者是返回上传后文件的的url
			Log.v("result = " + result);
			Log.v("上传成功");
		}
	}
}




© 著作权归作者所有

军歌
粉丝 9
博文 86
码字总数 43501
作品 0
深圳
程序员
私信 提问
Android HttpClient上传文件与Httpconnection知识小结

Android上传文件到服务端可以使用HttpConnection 上传文件,也可以使用Android封装好的HttpClient类。当仅仅上传文件可以直接使用httpconnection 上传比较方便快捷。 1、使用HttpConection上...

安克诚
2012/07/11
0
0
在android中模拟表单上传数据

本人最近在安卓端开发与后台链接的代码,但是我发现在安卓中没有提供上传表单的方式。于是我上网了解了一下,了解到可以应用一种向后台写入的特殊格式可以达到上传表单的效果。可惜的是调试未...

Callen
2013/11/17
2.2K
2
Android使用MultipartEntityBuilder实现类似form表单提交方式的文件上传

最近在做 Android 端文件上传,要求采用 form 表单的方式提交,项目使用的 afinal 框架有文件上传功能,但是始终无法与php写的服务端对接上,无法上传成功。读源码发现:afinal 使用了某大神...

中成才
2014/12/05
0
14
安卓 模拟表单 上传多文件 name 怎么个起名呢?

服务端是PHP接收数据。如果用网页的话提交多文件这样起名 这样起的话我PHP这边接收$_FILES['thumb']就行。上传了几张我循环时就得到了。 安卓的话这个name应怎么样起名呢?? 为啥他们传来我...

不会武功
2014/11/14
99
0
Android 网络框架 Retrofit

概述 Retrofit是一个OkHttp网络请求框架的封装库,Retrofit通过注解配置网络参数,可以按照我们的规则去构造实际的HTTP请求,能够灵活设置URL、头部、请求体、返回值等,是目前最优雅的一个网...

xi阳
2018/09/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ubuntu或ubuntu kylin优麒麟中安装QQ、wechat微信、百度网盘

从中国国内的地址下载deepin wine,码云上的。这样网速比较快。然后,按照说明向下安装。 https://gitee.com/wszqkzqk/deepin-wine-for-ubuntu...

gugudu
32分钟前
1
0
基于redis分布式锁实现“秒杀”

最近在项目中遇到了类似“秒杀”的业务场景,在本篇博客中,我将用一个非常简单的demo,阐述实现所谓“秒杀”的基本思路。 业务场景 所谓秒杀,从业务角度看,是短时间内多个用户“争抢”资源...

别打我会飞
51分钟前
14
0
Zookeeper的实践指南

本章重点 1.数据存储2.基于Java API初探Zookeeper的使用3.深入分析Watcher机制的实现原理4.Curator客户端的使用,简单高效 数据存储 事务日志快照日志运行时日志 bin/zookeepe...

须臾之余
55分钟前
2
0
MySQL mybatis Point类型数据

MySQL中的point用于表示GIS中的地理坐标,在GIS中广泛使用 如何写入mysql,如下图: CREATE TABLE `test-point` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号', `point` ......

张欢19933
今天
3
0
设计模式-适配器模式

适配器模式 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 这种模式涉及到一个单一的类,该类负责加入...

HOT_POT
今天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部