Android 使用HttpClient和第三方MIME文件上传类库,实现文件上传
2014-08-18 20:46
666 查看
转自:/article/2946362.html
MainActivity中定义的方法
服务器端PHP程序:
Android-HttpClient上传信息(包括图片)到服务端
需要下载apache公司下的HttpComponents项目下的HTTPCLIENT
----------地址为http://hc.apache.org/downloads.cgi
主要是用到了httpmime-4.1.2.jar包
android客户端:
以下是请求action的jsp表单(测试用)
模拟构造上面的请求表单
<action name="AddFoodStyle" class="com.ordermeal.xiao.action.AddFoodStyle">
<result name="success" type="redirect">/ShowAddFoodStyle</result>
</action>
action的编写
MainActivity中定义的方法
private void httpUpload() { //定义HttpClient对象 HttpClient client = new DefaultHttpClient(); //获得HttpPost对象 HttpPost post = new HttpPost("http://192.168.1.106:8001/2012/upload.php"); post.addHeader("charset", HTTP.UTF_8); //实例化 MultipartEntity me = new MultipartEntity(); try { me.addPart("content",new StringBody("12cccafasdfasdf")); me.addPart("title",new StringBody("csdnliwei")); me.addPart("local",new StringBody("beijing")); //设置流文件 me.addPart("file", new InputStreamBody(new FileInputStream("/mnt/sdcard/test.jpg"), "image/pjpeg", "fengjie.jpg")); post.setEntity(me); //获得响应消息 HttpResponse resp = client.execute(post); if(resp.getStatusLine().getStatusCode()==200){ Toast.makeText(this, "文件上传文成!", 1).show(); } } catch (Exception e) { e.printStackTrace(); } }
服务器端PHP程序:
<?php header("Content-type:text/html;charset=utf-8"); print_r($_FILES['file']); $filename = $_FILES['file']['name']; if(!$_FILES['file']['error']){ if(move_uploaded_file($_FILES['file']['tmp_name'],"./upload/".$filename)){ echo "文件上传成功"; }else{ echo "文件上传失败le"; } }else{ echo "文件上传错误"; } ?>
Android-HttpClient上传信息(包括图片)到服务端
需要下载apache公司下的HttpComponents项目下的HTTPCLIENT
----------地址为http://hc.apache.org/downloads.cgi
主要是用到了httpmime-4.1.2.jar包
android客户端:
以下是请求action的jsp表单(测试用)
<form action="AddFoodStyle" enctype="multipart/form-data" method="post"> <div style="width:300px;"> <s:textfield label="菜式名称" name="foodname"></s:textfield><br/> <s:select name="foodstyle" list="list" label="菜式类别" listKey="Itemid" listValue="itemname" >
</s:select><br/> <s:textfield label="菜式价格" name="price"></s:textfield><br/> <s:file label="菜式图片" name="foodimg"></s:file><br/> <s:textarea label="菜式标签" name="foodtab" cols="20" cssStyle=""></s:textarea><br/> <s:textfield label="菜式状态" name="state"></s:textfield><br/> <s:submit value="添加"/> </div> </form>
模拟构造上面的请求表单
private String url="http://192.168.2.189:8080/MyOrderMeal/AddFoodStyle"; HttpClient httpclient= new DefaultHttpClient(); HttpPost httpPost= new HttpPost(url); MultipartEntity mulentity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); mulentity.addPart("foodname", new StringBody(foodname.getText().toString().trim())); mulentity.addPart("foodstyle", new StringBody(foodstyle.getText().toString().trim())); mulentity.addPart("price", new StringBody(foodprice.getText().toString().trim())); //添加图片表单数据 FileBody filebody = new FileBody(this.image); mulentity.addPart("foodimg",filebody ); mulentity.addPart("foodtab", new StringBody(foodtab.getText().toString().trim())); mulentity.addPart("state", new StringBody("1")); httpPost.setEntity(mulentity); HttpResponse response = httpclient.execute(httpPost); if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK) { makeToase("上传成功",true); if(this.image.exists()) this.image.delete(); } else { makeToase("上传失败",true); }服务端:action的配置
<action name="AddFoodStyle" class="com.ordermeal.xiao.action.AddFoodStyle">
<result name="success" type="redirect">/ShowAddFoodStyle</result>
</action>
action的编写
public class AddFoodStyle extends ActionSupport{ /** * */ private static final long serialVersionUID = -8380963167787044860L; private String foodname; private Integer foodstyle; private Double price; //接收上传文件 private File foodimg; private String foodimgFileName; private String foodimgContentType; private String foodtab; private Integer state; @Override public String execute() throws Exception { FoodStyleDao fsd = DaoFactory.getFoodStyleDao(); FoodStyle foodstyleob= new FoodStyle(); foodstyleob.setFoodname(foodname); foodstyleob.setMystyletype(foodstyle); foodstyleob.setFoodprice(price); foodstyleob.setImageurl(foodimgFileName); foodstyleob.setFoodtab(foodtab); foodstyleob.setFdstystate(state); fsd.addFoodStyle(foodstyleob); String path= ServletActionContext.getServletContext().getRealPath("/"); //保存上传文件 FileUtil.copyFile(foodimg, path+"/images/"+foodimgFileName); return SUCCESS; }
相关文章推荐
- Android 使用HttpClient和第三方MiME文件上传类库,实现文件上传
- Android 使用HttpClient和第三方MiME文件上传类库,实现文件上传
- 【android,9】9.使用HttpClient实现上传文件
- Android网络编程之使用HttpClient批量上传文件(二)AsyncTask+HttpClient并实现上传进度监听
- Android网络编程之使用HttpClient批量上传文件(二)AsyncTask+HttpClient并实现上传进度监听
- node.js+android(使用HttpURLConnection和HttpClient)实现文件上传
- Android网络编程之使用HttpClient批量上传文件(二)AsyncTask+HttpClient并实现上传进度监听
- android使用HttpClient实现post get (和文件上传)
- Android使用HttpClient实现文件上传到PHP服务器,并监控进度条
- Android使用HttpClient实现文件上传到PHP服务器,并监控进度条
- Android之使用Http协议实现文件上传功能
- Android分别使用HTTP协议和TCP协议实现上传文件
- Android之使用Http协议实现文件上传功能
- Android使用http协议实现文件的上传(转)
- Android使用http协议实现文件的上传
- Android中利用apache的httpclient实现文件的上传
- Android网络编程之使用HttpClient批量上传文件(一)
- Android之使用Http协议实现文件上传功能
- Android分别使用HTTP协议和TCP协议实现上传文件
- jsp中使用第三方组件实现文件上传