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