httpclient 上传文件、下载文件

用httpclient4.3 post方式推送文件到服务端  
准备:httpclient-4.3.3.jar;httpcore-4.3.2.jar;httpmime-4.3.3.jar

标签: <无>

代码片段(1)[全屏查看所有代码]

1. [代码][Java]代码

/**
 * 上传文件
 * @throws  ParseException
 * @throws  IOException
 */   
publicstaticvoidpostFile()throwsParseException, IOException{
    CloseableHttpClient httpClient = HttpClients.createDefault();
    try{
        // 要上传的文件的路径
        String filePath =newString("F:/pic/001.jpg");
        // 把一个普通参数和文件上传给下面这个地址 是一个servlet
        HttpPost httpPost =newHttpPost(
                "http://localhost:8080/xxx/xxx.action");
        // 把文件转换成流对象FileBody
        File file =newFile(filePath);
        FileBody bin =newFileBody(file); 
        StringBody uploadFileName =newStringBody(
                "把我修改成文件名称", 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
 * @param  destFileName   xxx.jpg/xxx.png/xxx.txt
 * @throws  ClientProtocolException
 * @throws IOException
 */
publicstaticvoidgetFile(String url, String destFileName)
        throwsClientProtocolException, IOException {
    // 生成一个httpclient对象
    CloseableHttpClient httpclient = HttpClients.createDefault();
    HttpGet httpget =newHttpGet(url);
    HttpResponse response = httpclient.execute(httpget);
    HttpEntity entity = response.getEntity();
    InputStream in = entity.getContent();
    File file =newFile(destFileName);
    try{
        FileOutputStream fout =newFileOutputStream(file);
        intl = -1;
        byte[] tmp =newbyte[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 上传文件、下载文件

时间: 2024-10-15 15:06:37

httpclient 上传文件、下载文件的相关文章

Linux (rz、sz命令行)与本地电脑 命令行上传、下载文件

Linux 与本地电脑直接交互, 命令行上传.下载文件. 一.lrzsz命令行安装: 1.rpm安装:(链接: http://pan.baidu.com/s/1cBuTm2 密码: vijf) rpm -ivh lrzsz-0.12.20-22.1.x86_64.rpm 2.yum 安装: yum install lrzsz 二.命令使用: 1.发送到本地: sz 文件名 2.上传到服务器: rz -be 在弹出的框中选择文件,上传文件的用户和组是当前登录的用户

【转】每天一个linux命令(26):用SecureCRT来上传和下载文件

原文网址:http://www.cnblogs.com/peida/archive/2012/11/28/2793181.html 用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem. 文件传输协议: 文件传输是数据交换的主要形式.在进行文件传输时,为使文件能被正确识别和传送,我们需要在两台计算机之间建立统一的传输协议.这个协议包括了文件的识别.传送的

利用SecureCRT上传、下载文件(使用sz与rz命令),超实用!

    借助securtCRT,使用linux命令sz可以很方便的将服务器上的文件下载到本地,使用rz命令则是把本地文件上传到服务器.     其中,对于sz和rz的理解与记忆我用了如下的方法(很多时候容易搞混):     sz中的s意为send(发送),告诉客户端,我(服务器)要发送文件 send to cilent,就等同于客户端在下载.     rz中的r意为received(接收),告诉客户端,我(服务器)要接收文件 received by cilent,就等同于客户端在上传.    

基于sftp来上传和下载文件

1. 什么是sftp? sftp是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.主要用来在Linux系统进行文件的上传和下载,无需其他的附属软件或者工具. 2. 如何打开sftp? Linux下直接在终端中输入:sftp username[email protected] ip(or remote host name).出现验证时,只需填入正确的密码即可实现远程链接.登入成功后终端呈现出:sftp>.... sftp在非

secureCRT上传、下载文件

secureCRT上传和下载命令分别为rz.sz 我的理解是rz,就是服务器接收(received),sz,就是服务器发送(send). secureCRT上的命令就是: 下载 sz filename(filename是你要下载的文件名,前提要进入那个文件所在的目录) 下载下来的文件存放的目录设置下图可见: 上传 rz再选择你要上传的文件. secureCRT上传.下载文件,布布扣,bubuko.com

Linux--用SecureCRT来上传和下载文件

SecureCRT下的文件传输协议有以下几种:ASCII.Xmodem.Ymodem.Zmodem ASCII:这是最快的传输协议,但只能传送文本文件. Xmodem:这种古老的传输协议速度较慢,但由于使用了CRC错误侦测方法,传输的准确率可高达99.6%. Ymodem:这是Xmodem的改良版,使用了1024位区段传送,速度比Xmodem要快Zmodem:Zmodem采用了串流式(streaming)传输方式,传输速度较快,而且还具有自动改变区段大小和断点续传.快速错误侦测等功能.这是目前最

linux命令学习笔记(26):用SecureCRT来上传和下载文件

用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem. 文件传输协议: 文件传输是数据交换的主要形式.在进行文件传输时,为使文件能被正确识别和传送,我们需要在两台计算机之间建立统一的传输协议.这个协议包括了文件的识别.传送的起止时间.错误的判断与纠正等内容.常见的传输协议有以下几种: ASCII:这是最快的传输协议,但只能传送文本文件. Xmodem:这

11、只允许在主目录下上传和下载文件,不允许用putty登录

创建用户xiao,   使其只允许在用户主目录 (/var/www/html)下上传和下载文件,不允许用putty登录 (为了安全起见,不给过多的权限) 1.创建xiao用户 [[email protected] root]#  cd  /var/www/html[[email protected] html]#  useradd  xiao  -d  /var/www/html   -s   /sbin/nologin   -g   apache -d    目录         指定用户主目

每天一个linux命令(26):用SecureCRT来上传和下载文件

用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem. 文件传输协议: 文件传输是数据交换的主要形式.在进行文件传输时,为使文件能被正确识别和传送,我们需要在两台计算机之间建立统一的传输协议.这个协议包括了文件的识别.传送的起止时间.错误的判断与纠正等内容.常见的传输协议有以下几种:  ASCII:这是最快的传输协议,但只能传送文本文件.  Xmodem

每天一个linux命令(26)--用SecureCRT来上传和下载文件

用SSH管理Linux 服务器时经常需要远程与本地之间交互文件,而直接使用 SecureCRT 自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem. 文件传输协议: 文件传输是数据交换的主要形式.在进行文件传输时,为使文件能被正确识别和传送,我们需要在两天计算机之间建立统一的传输协议.这个协议包括了文件的识别.传送的起止时间.错误的判断与纠正等内容.常见的传输协议有以下几种: ASCII:这是最快的传输协议,但只能传送文本文件. Xmod