基于HttpClient 4.3.3 的一个上传、下载文件的例子

转载 2015年11月18日 17:01:46

转自:http://www.oschina.net/code/snippet_216580_38020

基于HttpClient 4.3.3 的一个上传、下载文件的例子,特转载以供大家学习参考。


/**
 * 上传文件 
 * @throws ParseException
 * @throws IOException
 */   
public static void postFile() throws ParseException, IOException{
    CloseableHttpClient httpClient = HttpClients.createDefault();
    try {
        // 要上传的文件的路径
        String filePath = new String("F:/pic/001.jpg");
        // 把一个普通参数和文件上传给下面这个地址 是一个servlet
        HttpPost httpPost = new HttpPost(
                "http://localhost:8080/xxx/xxx.action");
        // 把文件转换成流对象FileBody
        File file = new File(filePath);
        FileBody bin = new FileBody(file);  
        StringBody uploadFileName = new StringBody(
                "把我修改成文件名称", ContentType.create(
                        "text/plain", Consts.UTF_8));
        //以浏览器兼容模式运行,防止文件名乱码。  
           HttpEntity reqEntity = MultipartEntityBuilder.create().setMode(HttpMultipartMode.BROWSER_COMPATIBLE)
                .addPart("uploadFile", bin) //uploadFile对应服务端类的同名属性<File类型>
                .addPart("uploadFileName", uploadFileName)//uploadFileName对应服务端类的同名属性<String类型>
                .setCharset(CharsetUtils.get("UTF-8")).build();
 
        httpPost.setEntity(reqEntity);
 
        System.out.println("发起请求的页面地址 " + httpPost.getRequestLine());
        // 发起请求 并返回请求的响应
        CloseableHttpResponse response = httpClient.execute(httpPost);
        try {
            System.out.println("----------------------------------------");
            // 打印响应状态
            System.out.println(response.getStatusLine());
            // 获取响应对象
            HttpEntity resEntity = response.getEntity();
            if (resEntity != null) {
                // 打印响应长度
                System.out.println("Response content length: "
                        + resEntity.getContentLength());
                // 打印响应内容
                System.out.println(EntityUtils.toString(resEntity,
                        Charset.forName("UTF-8")));
            }
            // 销毁
            EntityUtils.consume(resEntity);
        } finally {
            response.close();
        }
    } finally {
        httpClient.close();
    }
}
 
 /**
 * 下载文件
 * @param url            http://www.xxx.com/img/333.jpg
 * @param destFileName   xxx.jpg/xxx.png/xxx.txt
 * @throws ClientProtocolException
 * @throws IOException
 */
public static void getFile(String url, String destFileName)
        throws ClientProtocolException, IOException {
    // 生成一个httpclient对象
    CloseableHttpClient httpclient = HttpClients.createDefault();
    HttpGet httpget = new HttpGet(url);
    HttpResponse response = httpclient.execute(httpget);
    HttpEntity entity = response.getEntity();
    InputStream in = entity.getContent();
    File file = new File(destFileName);
    try {
        FileOutputStream fout = new FileOutputStream(file);
        int l = -1;
        byte[] tmp = new byte[1024];
        while ((l = in.read(tmp)) != -1) {
            fout.write(tmp, 0, l);
            // 注意这里如果用OutputStream.write(buff)的话,图片会失真,大家可以试试
        }
        fout.flush();
        fout.close();
    } finally {
        // 关闭低层流。
        in.close();
    }
    httpclient.close();
}

相关文章推荐

HttpClient 4使用方法的几个例子(代理,StringEntity字符串数据,文件上传)(转载)

HttpClient 4使用方法的几个例子(代理,StringEntity字符串数据,文件上传)(转载) (2012-02-10 15:51:35) 转载▼ 标签:  ...

Android开发 基于HttpComponent4.3.3实现文件上传至tomcat服务器(基于struts框架)

package com.example.httpupload; import java.io.File; import java.io.FileNotFoundException; import j...

struts2文件上传的一个简单的例子

  • 2012年09月01日 12:53
  • 3.08MB
  • 下载

一个ajax+jsp上传文件的例子

  • 2010年08月09日 16:37
  • 112KB
  • 下载

跨域 上传文件 的一个例子

web端: var xhr = new XMLHttpRequest(); /** * handle c...

Silverlight上传文件一个好例子

  • 2012年03月30日 20:22
  • 189KB
  • 下载

Java:使用HttpClient进行POST和GET请求以及文件上传和下载

1.HttpClient 大家可以先看一下HttpClient的介绍,这篇博文写的还算不错:http://blog.csdn.net/wangpeng047/article/details/19...

HttpClient封装,get请求和post请求,文件下载和上传

 public void sendRequest(RequestMethod method, String target, Map params, final HttpTaskListener ...

Java:使用HttpClient进行POST和GET请求以及文件上传和下载

1.HttpClient大家可以先看一下HttpClient的介绍,这篇博文写的还算不错:http://blog.csdn.net/wangpeng047/article/details/196245...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于HttpClient 4.3.3 的一个上传、下载文件的例子
举报原因:
原因补充:

(最多只允许输入30个字)