美文网首页
(014) HttpClient上传文件

(014) HttpClient上传文件

作者: Lindm | 来源:发表于2018-11-30 09:07 被阅读0次
一、前言

虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

注意: HttpClient有两种形式,一种是org.apache.http下的,一种是org.apache.commons.httpclient.HttpClient。

二、客户端处理
package TestZookeeper.TestZookeeper;

import java.io.File;
import java.io.FileInputStream;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.InputStreamEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

/**
 * 发送请求
 * @author lindm
 * @date 2018/11/30
 */
public class App 
{
    public static void main(String[] args) {
        @SuppressWarnings("deprecation")
        HttpClient ht = new DefaultHttpClient();
        HttpPost post = new HttpPost("http://127.0.0.1:8088/egovAtt/uploadEgovAttFile");
        HttpResponse rs = null;
        try{
            File testFile = new File("C:/Users/Administrator/Documents/Tencent Files/594485991/FileRecv/MobileFile/(批注)(9).pdf");
            System.out.println(testFile.exists());
            //文件流包装到FileBody
            post.setEntity(new InputStreamEntity(new FileInputStream(testFile),testFile.length())); 
            //设置请求内容类型(若不显示设置,默认text/plain;不同的类型服务端解析格式不同,可能导致参请求参数解析不到的情况) 
            post.addHeader("Content-Type", "application/octet-stream"); 
            //设置请求参数docId
            post.addHeader("docId", "W86GOuSwhwKc1xGG");            post.addHeader("type", "pdf");
            //发送请求
            rs = ht.execute(post); 
            System.out.println(""+rs.getStatusLine().getStatusCode()+" "+EntityUtils.toString(rs.getEntity(),"utf-8"));
        }catch (Exception e) {
            e.printStackTrace();
        }finally{
            // 销毁
            EntityUtils.consume(rs);
        }
    }

}

三、服务端处理
/**
     * 上传附件,单文件上传<br/>
     * <ul>
     *     <li>请求头需携带参数:docId(所属文档id)、type(附件类别)、contentType(文件类型)
     *     、fileName(附件名称)、Content-Type(文件类型)</li>
     * </ul>
     *
     * @return
     */
    @PostMapping("/uploadEgovAttFileWithFileStream")
    public @ResponseBody String uploadEgovAttFileWithFileStream(HttpServletRequest request) throws Exception {
     
        //从请求头获取参数
        String docId = request.getHeader("docId");
        String type = request.getHeader("type");
        String extension = request.getHeader("extension");
        String fileName = request.getHeader("fileName");

        // 读取文件流
        InputStream is = request.getInputStream();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len;
        while ((len = is.read(buffer)) > -1) {
            baos.write(buffer, 0, len);
        }
        baos.flush();
        is.close();
        // 转为字节数组
        byte[] fileByte = baos.toByteArray();

        //...do anything

        return "upload success";
    }
四、参考博文

1、https://www.cnblogs.com/Scott007/p/3817285.html
2、https://www.cnblogs.com/wuweidong/p/5953167.html
3、https://www.jianshu.com/p/7ab966dfa507

相关文章

  • (014) HttpClient上传文件

    一、前言 虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程...

  • 2018-07-20

    java httpclient 模拟表单发送数据@ApiOperation(value = "上传文件", not...

  • HttpClient4 上传文件中文乱码问题

    使用HttpClient上传文件,如文件名为中文,会出现中文乱码问题,解决方法如下: 添加上传格part为UTF-...

  • HttpClient的基本使用

    使用的包 一个简单的httpClient实例 可以上传和下载文件的httpClient 以上http请求适用的接口...

  • FastHttpClient

    简单易用的httpclient 封装OkHttp3,对外提供了POST请求、GET请求、上传文件、下载文件、htt...

  • ubuntu20.04配置ftp服务器-java通过ftpCli

    前言 上传文件有多种方法,比较常用的就是http网页上传或者httpClient后台接口上传,这两种方法之前写过以...

  • 使用HttpClient实现文件上传

    HttpClient4.x可以自带维持会话功能,只要使用同一个HttpClient且未关闭连接,则可以使用相同会话...

  • HttpClient模拟文件上传、下载

    1、httpclient模拟上传文件操作 (1)、传头部信息doUpload方法 (2)、不传头部信息doUplo...

  • HttpClient利用MultipartEntityBuild

    注意:在HttpClient4.3之后,原来的上传文件方法MultipartEntity已经不建议使用,现替换成新...

  • 014-FastDFS文件上传

    FastDFS文件服务器需要提前安装好(可以查看我的环境安装教程)。 fastdfs通常情况下可以做两种功能,一种...

网友评论

      本文标题:(014) HttpClient上传文件

      本文链接:https://www.haomeiwen.com/subject/ggpqcqtx.html