基于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实现文件的上传下载

最近系统中需要和第三方的系统做一个集成。由于是需要调用远程的服务, 一开始自己的想的主要有两种方案,第一是通过WebService的方式,由对、方生成对应的WebService服务,然后客户端再根...
  • xiaobing_122613
  • xiaobing_122613
  • 2017年01月24日 08:59
  • 751

HttpClient实现文件的上传下载

1 HTTP     HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。     虽然在 JDK ...
  • z69183787
  • z69183787
  • 2015年07月17日 14:22
  • 1715

转载 httpclient 上传、下载文件

转自:http://www.oschina.net/code/snippet_216580_38020 基于HttpClient 4.3.3 的一个上传、下载文件的例子,特转载以供大家学习参考。 ...
  • z69183787
  • z69183787
  • 2015年07月17日 14:25
  • 1319

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

1.HttpClient大家可以先看一下HttpClient的介绍,这篇博文写的还算不错:http://blog.csdn.net/wangpeng047/article/details/196245...
  • NUPTboyZHB
  • NUPTboyZHB
  • 2015年01月14日 23:30
  • 24741

网络编程之使用HttpClient批量上传文件

请尊重他人的劳动成果,转载请注明出处:Android网络编程之使用HttpClient批量上传文件 我曾在《Android网络编程之使用HTTP访问网络资源》一文中介绍过HttpCient的...
  • Demon_huirong
  • Demon_huirong
  • 2016年07月11日 08:55
  • 1265

轻松把玩HttpClient之封装HttpClient工具类(九),添加多文件上传功能

在Git上有人给我提Issue,说怎么上传文件,其实我一开始就想上这个功能,不过这半年比较忙,所以一直耽搁了。这次正好没什么任务了,赶紧完成这个功能。毕竟作为一款工具类,有基本的请求和下载功能,就差上...
  • xiaoxian8023
  • xiaoxian8023
  • 2016年11月07日 14:13
  • 4528

利用AsyncHttpClient实现图片的上传与下载+进度条

利用AsyncHttpClient实现图片的上传与下载+  进度条 图片上传 [java] view plaincopy     ...
  • u010507199
  • u010507199
  • 2015年04月28日 14:47
  • 4355

HttpClient 实现文件的上传

文件上传可以使用两种方式实现,一种是PostMethod方式,一种是HttpPost方式。两者的处理大同小异。PostMethod是使用FileBody将文件包装流包装起来,HttpPost是使用Fi...
  • natur_630
  • natur_630
  • 2017年06月01日 17:35
  • 731

HttpClient通过Post上传文件

在之前一段的项目中,使用Java模仿Http Post方式发送参数以及文件,单纯的传递参数或者文件可以使用URLConnection进行相应的处理。           但是项目中涉及到既要传递...
  • jdsjlzx
  • jdsjlzx
  • 2013年04月19日 19:28
  • 81607

转载 httpclient 上传、下载文件

转自:http://www.oschina.net/code/snippet_216580_38020 基于HttpClient 4.3.3 的一个上传、下载文件的例子,特转载以供大家学习参考。 ...
  • lianghongge
  • lianghongge
  • 2014年12月24日 10:38
  • 9840
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于HttpClient 4.3.3 的一个上传、下载文件的例子
举报原因:
原因补充:

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