這裏直接貼出的是我封裝好的doPostFile方法,httpclient 的版本是3.1。
public static String doPostFile(String url, Part[] parts){ String response = null; PostMethod postMethod = new PostMethod(url); try{ //設置請求實體 postMethod.setRequestEntity(new MultipartRequestEntity(parts,postMethod.getParams())); HttpClient client = new HttpClient(); //設置連接超時限度 client.getHttpConnectionManager().getParams().setConnectionTimeout(5000); client.executeMethod(postMethod); if(postMethod.getStatusCode() == HttpStatus.SC_OK){ response = new String(postMethod.getResponseBodyAsString().getBytes("utf-8")); } } catch(Exception e){ LOGGER.error("HttpServiceSender.doPostFile()",e.getMessage()); } finally { postMethod.releaseConnection(); } return response; }
調用此方法的代碼,注意參數的傳遞方式
public String uploadImage(File file,String id,String name){ String result = null; try{ //文件part,new FilePart添加的是File類型的文件,後面StringPart則爲字符串參數 Part[] parts = { new FilePart("file", file), new StringPart("id", id), new StringPart("id",name)}; result = HttpServiceSender.doPostFile(SERVER+"service/resource/upload",parts); }catch(Exception e){ Logger.error("ImageService.uploadImage()", e.getMessage()); } return result; }