关于httpClient上传文件

jopen 11年前

最近要做客户端上传图片和参数,服务器整合了SSH . 废话不多说,上代码


客户端:

import java.io.File;  import java.io.InputStream;  import java.util.HashMap;  import java.util.List;  import java.util.Map;    import org.apache.http.HttpEntity;  import org.apache.http.HttpResponse;  import org.apache.http.HttpStatus;  import org.apache.http.client.CookieStore;  import org.apache.http.client.methods.HttpPost;  import org.apache.http.cookie.Cookie;  import org.apache.http.entity.mime.MultipartEntity;  import org.apache.http.entity.mime.content.FileBody;  import org.apache.http.entity.mime.content.StringBody;  import org.apache.http.impl.client.DefaultHttpClient;    public class Test(){                //photoFileName   public void upload() throws Exception{        String url = "http://localhost:8080/scan/mperson_upLoadImage.action";        HashMap<String, Object>params =new HashMap<String, Object>();        params.put("id", 3);                String imagepath = "C:/Users/zsq/Desktop/abc.png";          MultipartEntity mpEntity = new MultipartEntity();              if (params != null && !params.isEmpty()) {                  for (Map.Entry<String, Object> entry : params.entrySet()) {                              //参数名                   StringBody par = new StringBody(entry.getValue().toString());                         mpEntity.addPart(entry.getKey(), par);                  }              }                   // 图片              if (!imagepath.equals("")) {                  FileBody file = new FileBody(new File(imagepath));                  mpEntity.addPart("photo", file);              }              // 使用HttpPost对象设置发送的URL路径              HttpPost post = new HttpPost(url);            post.setHeader("Cookie", "JSESSIONID=" + JSESSIONID);           // 发送请求体              post.setEntity(mpEntity);              // 创建一个浏览器对象,以把POST对象向服务器发送,并返回响应消息              DefaultHttpClient client = new DefaultHttpClient();              HttpResponse response = client.execute(post);                  if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {      // 封装了服务器端返回的数据      HttpEntity responseEntity = response.getEntity();      // 将服务器返回的输入流 解析为 字符串      // EntityUtils.toString(responseEntity)            //对服务器返回的session进行记录        CookieStore mCookieStore = ((DefaultHttpClient) client).getCookieStore();              List<Cookie> cookies = mCookieStore.getCookies();                for (int i = 0; i < cookies.size(); i++) {         //如果cookies头和"JSESSIONID" 就记录sessionID         if("JSESSIONID".equals(cookies.get(i).getName())){          JSESSIONID = cookies.get(i).getValue();          break;         }             }      InputStream is =  responseEntity.getContent();           String result = StreamUtils.read(is);     System.out.println("上传的结果是 : "+ result);                    }           }       }
javaWeb端
public  void  upLoadImage () throws Exception{        System.out.println("有到upLoadImage这里来?");    String realPath = ServletActionContext.getServletContext().getRealPath("/WEB-INF/person_photo");    System.out.println(realPath);    System.out.println("uploadFileName : "+photoFileName);    UUID uuid = UUID.randomUUID();             int id = model.getId();    System.out.println("得到的ID: "+model.getId());    //System.out.println("photoContentType"+v);        String fileLastName = photoFileName.substring(photoFileName.lastIndexOf("."));        //存放的是UUID的名字    String uuidName = uuid.toString()+fileLastName;    PrintWriter writer = getWriter();    if(photo!=null){     File saveFile = new File(new File(realPath),uuidName);     FileUtils.copyFile(photo, saveFile);     writer.print("{scuess:true}");    }else{          writer.print("{scuess:false,error:'photo_null'}");    }                      }
uploadFileName  // 是strust2 自动把上传文件的名字封装到这个uploadFileName