android-HttpClient上传信息(包括图片)到服务端

需要下载apache公司下的HttpComponents项目下的HTTPCLIENT

----------地址为http://hc.apache.org/downloads.cgi

主要是用到了httpmime-4.1.2.jar包

android客户端:

以下是请求action的jsp表单(测试用)

   
    

        
       

        
       

        
       
        
        
       
        
        
       
        
        
       
        
        
        
       
    

模拟构造上面的请求表单:

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的配置


    
          /ShowAddFoodStyle
    

  
    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;


、、、、省略get  set方法

@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,struts2)