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;

    }

 

你可能感兴趣的:(httpclient)