`
sundful
  • 浏览: 1250093 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

httpclient 上传、下载文件

 
阅读更多
/**
 * 上传文件 
 * @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上传文件

    在这个场景中,我们关注的是如何使用HttpClient来上传文件到服务器。Apache HttpClient支持POST请求,特别是Multipart/form-data类型的POST,这是上传文件的标准格式。以下是关于这个主题的详细讲解: 1. **...

    httpclient和RestfuL风格上传下载文件

    文件下载通常通过GET请求完成,HTTPClient可以通过`HttpGet`类创建请求。服务端提供一个URL,客户端发送GET请求获取资源,然后可以将响应流保存到本地文件。 **分布式系统中的交互** 在Java分布式系统中,...

    HttpClient实现POST GET和文件下载

    ### 文件下载 HttpClient提供了一种便捷的方式来下载文件: 1. **创建HttpGet请求**:指定要下载文件的URL。 2. **执行请求**:发送请求并获取`HttpResponse`。 3. **准备输出流**:创建一个本地文件,并用`...

    httpclient 文件上传 下载

    文件下载通常通过GET请求实现,HTTPClient 4中的`HttpGet`类就是为此设计的。你可以创建一个`HttpGet`实例,指定文件的URL,然后使用`HttpClient.execute()`方法发送请求。为了保存下载的文件,你可以创建一个`...

    HttpClient 4 - 文件上传

    HttpClient 4 版本引入了许多改进,使得文件上传变得更加简单和高效。在这个主题中,我们将深入探讨HttpClient 4如何实现文件上传,以及相关的核心概念和技术。 首先,我们需要了解HttpClient 4的基本用法。...

    Java后端HttpClient Post提交文件流 及服务端接收文件流

    HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。

    HttpClient 4文件上传

    ### HttpClient 4 文件上传知识点详解 #### 一、概述 在Java开发中,经常会遇到需要通过HTTP协议上传文件的需求。Apache HttpClient是一个强大的客户端HTTP组件,它不仅支持HTTP协议,还能处理HTTPS请求,并提供了...

    四、使用HttpClient上传测试文件服务器

    本篇文章将详细讲解如何利用HttpClient上传文件到测试服务器,这在进行API测试、自动化测试或者集成测试时非常有用。我们先来理解一下HttpClient的基本概念,然后逐步探讨文件上传的步骤。 HttpClient是由Apache...

    HttpClient上传文件需要的Jar包

    在这个场景中,"HttpClient上传文件需要的Jar包"指的是在使用HttpClient进行文件上传操作时,你需要确保引入了正确的依赖库。 首先,我们需要了解HttpClient的基本概念。HttpClient是Apache软件基金会的一个项目,...

    httpClient文件上传

    使用httpclient上传文件, CloseableHttpClient httpClient = HttpClientBuilder.create().build();

    httpclient 上传文件

    在本篇文章中,我们将深入探讨如何使用HTTPClient上传文件以及解决可能出现的乱码问题。 首先,让我们关注“httpclient 上传文件”。在HTTP协议中,文件上传通常涉及到POST请求,特别是当Content-Type设置为...

    https+spring3+httpclient4多文件上传

    标题 "HTTPS + Spring3 + HttpClient4 多文件上传" 涉及到的是在Java环境中,使用Spring3框架和Apache HttpClient4库实现通过HTTPS协议上传多个文件的技术。这个主题涵盖了几大关键知识点,包括HTTPS安全通信、...

    httpClient post 上传 下载 图片

    1. **HttpClient上传图片**: - 首先,我们需要创建一个`HttpPost`对象,设置目标URI,这通常是一个服务器端处理图片上传的API接口。 - 接着,创建一个`MultipartEntityBuilder`,它可以处理多部分的HTTP请求,...

    HttpClient PostMethod 上传文件

    在本示例中,我们将深入探讨如何使用HttpClient的PostMethod来上传文件,以及处理Get和Post请求中的乱码问题。 一、HttpClient基础 HttpClient库提供了一套完整的API,允许我们构建复杂的HTTP请求。它支持GET、POST...

    httpclient4上传文件中文乱码问题解决办法代码示例

    服务器端自己写,本示例为客户端代码,可以解决httpClient4乱码问题,是替代修改源码的最佳写法。

    httpclient上传文件

    用httpcient上传文件,用httpclient上传文件

    HttpClient 文件上传

    在这个场景中,我们主要关注如何使用HttpClient进行文件上传。 文件上传通常涉及到Web服务器与客户端之间的交互,比如用户通过网页上传图片或文档到服务器。HttpClient库提供了一个方便的接口来实现这种功能。以下...

    使用HttpClient实现文件的上传所需lib

    从提供的文件名称列表"HttpClient实现文件的上传-lib"来看,这可能包含了所需的jar文件或者对应的Maven/Gradle依赖配置。 7. **最佳实践**:为了保持代码的整洁和可维护性,通常建议使用try-with-resources语句来...

Global site tag (gtag.js) - Google Analytics