Httpclient 实现带参文件上传
这里直接贴出的是我封装好的 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;
}
最后修改于 2013-08-07