java android上传文件_Java、Android实现表单提交——支持多文件同时上传

packagecn.com.ajava.util;importjava.io.File;importjava.io.Serializable;importjava.util.Iterator;importjava.util.LinkedHashMap;importjava.util.Map;importjava.util.Map.Entry;importorg.apache.http.Consts;importorg.apache.http.HttpEntity;importorg.apache.http.HttpResponse;importorg.apache.http.client.HttpClient;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.entity.ContentType;importorg.apache.http.entity.mime.MultipartEntityBuilder;importorg.apache.http.entity.mime.content.FileBody;importorg.apache.http.entity.mime.content.StringBody;importorg.apache.http.impl.client.DefaultHttpClient;importorg.apache.http.util.EntityUtils;/*** HttpClient工具类

*

*@author曾繁添

*@version1.0*/

public classHttpClientUtil

{public final static String Method_POST = "POST";public final static String Method_GET = "GET";/*** multipart/form-data类型的表单提交

*

*@paramform

* 表单数据*/

public staticString submitForm(MultipartForm form)

{//返回字符串

String responseStr = "";//创建HttpClient实例

HttpClient httpClient = newDefaultHttpClient();try{//实例化提交请求

HttpPost httpPost = newHttpPost(form.getAction());//创建MultipartEntityBuilder

MultipartEntityBuilder entityBuilder =MultipartEntityBuilder.create();//追加普通表单字段

Map normalFieldMap =form.getNormalField();for (Iterator> iterator =normalFieldMap.entrySet().iterator(); iterator.hasNext();)

{

Entry entity =iterator.next();

entityBuilder.addPart(entity.getKey(),new StringBody(entity.getValue(), ContentType.create("text/plain", Consts.UTF_8)));

}//追加文件字段

Map fileFieldMap =form.getFileField();for (Iterator> iterator =fileFieldMap.entrySet().iterator(); iterator.hasNext();)

{

Entry entity =iterator.next();

entityBuilder.addPart(entity.getKey(),newFileBody(entity.getValue()));

}//设置请求实体

httpPost.setEntity(entityBuilder.build());//发送请求

HttpResponse response =httpClient.execute(httpPost);int statusCode =response.getStatusLine().getStatusCode();//取得响应数据

HttpEntity resEntity =response.getEntity();if (200 ==statusCode)

{if (resEntity != null)

{

responseStr=EntityUtils.toString(resEntity);

}

}

}catch(Exception e)

{

System.out.println("提交表单失败,原因:" +e.getMessage());

}finally{

httpClient.getConnectionManager().shutdown();

}returnresponseStr;

}/**表单字段Bean*/

public class MultipartForm implementsSerializable

{/**序列号*/

private static final long serialVersionUID = -2138044819190537198L;/**提交URL **/

private String action = "";/**提交方式:POST/GET **/

private String method = "POST";/**普通表单字段 **/

private Map normalField = new LinkedHashMap();/**文件字段 **/

private Map fileField = new LinkedHashMap();publicString getAction()

{returnaction;

}public voidsetAction(String action)

{this.action =action;

}publicString getMethod()

{returnmethod;

}public voidsetMethod(String method)

{this.method =method;

}public MapgetNormalField()

{returnnormalField;

}public void setNormalField(MapnormalField)

{this.normalField =normalField;

}public MapgetFileField()

{returnfileField;

}public void setFileField(MapfileField)

{this.fileField =fileField;

}public voidaddFileField(String key, File value)

{

fileField.put(key, value);

}public voidaddNormalField(String key, String value)

{

normalField.put(key, value);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值