`
jahu
  • 浏览: 61276 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

httpClient,流作为文件上传

    博客分类:
  • java
 
阅读更多

重构一段代码的经历。

源代码,400多行。跳来跳出真心看不懂写的是什么。

主要是把数据加密,写入文件,然后发送给第三方。

按照第三方的给的 dome,你必须  三次文件创建,三次文件写入,三次文件读取。好乱,性能非常差,而且代码杂乱无章,温馨

作为一名有洁癖的程序员,绝对要有统筹,要结构化。

真心不知道,为什么第三方用这么愚蠢的解决方案。我有N种方案处理。但是绝对不会用这么愚蠢的方案。

 

不说,上代码

package com


import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.util.Args;
import org.apache.log4j.Logger;

public class OldFileBody extends FileBody {


    private static Logger logger = Logger.getLogger(OldFileBody.class);
    private byte[] text;   
    private static File file = new File("");

    private String fileName ;
    public OldFileBody(String text,String fileName) {
        this(text.getBytes(), fileName);
    }

    

    public OldFileBody(byte[] text,String fileName) {
        super(file);
        this.text = text;
        this.fileName = fileName;
    }


    public long getContentLength() {
        return this.text.length;
    }
    public String getFilename() {
        return fileName;
    }

    public void writeTo(final OutputStream out) throws IOException {
        Args.notNull(out, "Output stream");
        out.write(text);
    }
}



CloseableHttpClient httpclient = HttpClientBuilder.create().build();
        CloseableHttpResponse response = null;
        try {
            HttpPost httppost = new HttpPost(url);

            HttpEntity req = MultipartEntityBuilder.create().setMode(HttpMultipartMode.BROWSER_COMPATIBLE)
                    .addPart("files", new OldFileBody(bos.toByteArray(),"de.txt.gz"))
                    .build();
            httppost.setEntity(req);

            response = httpclient.execute(httppost);

            HttpEntity re = response.getEntity();
            System.out.println(response.getStatusLine());
            if (re != null) {
                System.out.println(
                        "Response content: " + new BufferedReader(new InputStreamReader(re.getContent())).readLine());
            }
            EntityUtils.consume(re);
        } finally {
            try {
                response.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

 

分享到:
评论

相关推荐

    httpclient和RestfuL风格上传下载文件

    综上所述,HTTPClient和RESTful风格的文件上传下载在Java分布式系统中具有广泛应用。通过HTTPClient实现HTTP请求,利用RESTful接口定义清晰的操作方式,可以构建高效、灵活的文件传输方案。同时,理解并遵循良好的...

    https+spring3+httpclient4多文件上传

    在文件上传场景中,HttpClient4可以用来发起POST请求,将文件内容作为请求体发送。 5. **HttpClient4的使用**: 使用HttpClient4进行文件上传,首先需要创建`CloseableHttpClient`实例,然后定义`HttpPost`请求,...

    httpclient 文件上传 下载

    它提供了丰富的功能,包括文件上传和下载,支持请求流,以及处理JSON和XML数据。在本例中,我们关注的是HTTPClient 4版本,这是一个稳定且功能强大的版本,适用于多种网络交互场景。 文件上传通常涉及到HTTP的POST...

    HttpClient实现POST GET和文件下载

    3. **准备输出流**:创建一个本地文件,并用`FileOutputStream`打开它作为输出流。 4. **读取响应内容**:从`HttpResponse`的`Entity`中获取输入流,逐块读取数据并写入到输出流。 5. **关闭流**:完成下载后,确保...

    HttpClient模拟客户端传输文件

    以下是一个简单的文件上传示例: 1. 创建HttpClient对象: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); ``` 2. 定义HttpPost请求: ```java HttpPost httpPost = new HttpPost(...

    httpclient使用post方法上传多个图片个其他参数的demo源码

    在本示例中,我们将关注“httpclient使用post方法上传多个图片和其他参数的demo源码”,这是一个涉及到文件上传和参数传递的重要场景。 在Web开发中,POST方法常用于向服务器提交数据,比如表单数据或文件。...

    安卓文件下载上传解压相关-Android使用HttpClient实现上传下载功能并监控进度.rar

    接下来是文件上传。HttpClient同样支持POST请求来上传文件: 1. 创建HttpPost请求:`HttpPost`对象用于指定接收文件的URL。 2. 添加文件到请求:使用`MultipartEntityBuilder`构建一个多部分实体,添加文件作为...

    文件流的下载和上传

    在IT行业中,文件流的下载和上传是网络应用的基础功能之一,广泛应用于各种场景,如云存储、文件共享、Web服务等。本示例聚焦于Windows Forms(WinForm)应用程序结合Web服务(Webservice)实现文件的上传和下载。...

    HttpClientUtils

    2. **文件上传**:HttpClientUtils集成了文件上传功能,能够处理multipart/form-data类型的请求,这在上传图片、文档等文件时非常有用。开发者可以通过简单的API调用来指定要上传的文件路径,而底层的实现会自动处理...

    HttpClient Post 二进制/字节流/byte[]实例代码

    在本文中,我们将深入探讨如何使用HttpClient进行POST请求,特别是发送二进制/字节流/byte[]数据。 ### HttpClient 3.x 实例 在HttpClient 3.x版本中,我们使用`HttpClient`类来创建一个HTTP客户端实例,然后通过`...

    httpclient4.4 jar包

    5. `HttpMime`:这个模块提供了处理MIME类型和多部分请求的能力,对于上传文件或处理复杂表单数据非常有用。 6. `JNA`(Java Native Access):在某些特定场景下,HttpClient可能会利用JNA来访问操作系统原生功能,...

    httpclient.zip

    - 面向流的API:使用`HttpEntity`和`InputStream`/`OutputStream`处理大文件上传下载,避免内存溢出。 - 异步处理:通过`Future`或回调函数实现非阻塞的异步请求。 8. **pom文件**: - pom文件是Maven项目的配置...

    文件上传源码 客户端服务端

    在文件上传时,HttpClient允许将文件内容作为请求体的一部分发送,这通常是通过MultipartEntityBuilder或者FormBodyPart来实现的,它们可以封装文件流并设置适当的边界以符合多部分表单数据的格式。 服务端部分则在...

    http post方式上传文件(C#)

    以下是一个基本的文件上传示例,使用`HttpClient`: ```csharp using System.IO; using System.Net.Http; using System.Threading.Tasks; public async Task UploadFile(string url, string filePath) { var ...

    C# 断点续传下载文件 实例源码(网络操作)

    这可以通过监听网络流的长度变化或者WebClient/HttpClient的下载进度事件来实现。 在提供的压缩包“断点续传下载文件”中,应该包含了实现以上步骤的C#源代码。通过分析和学习这个实例,开发者可以理解如何在实际...

    java 监听本地文件自动上传服务器

    结合这两个知识点,当文件夹中的文件发生变化时,你可以调用`FileUploader.uploadFile`方法将新文件或修改后的文件上传到服务器。为了实现完全自动化,你可能还需要处理错误和异常,确保在上传过程中保持文件同步的...

    java上传文件接口调用源码案例

    在Java中,文件上传通常涉及到调用远程服务器提供的API接口,这些接口接收文件作为输入并执行相应的处理。 1. **使用HTTP或HTTPS上传文件**: 文件上传通常通过POST请求进行,HTTP或HTTPS是互联网上常用的数据传输...

    FileStream多文件上传源码 WinForm C#

    "FileStream多文件上传源码 WinForm C#"这个项目就是针对这一需求的具体实现。 文件上传功能在许多应用程序中都是必要的,例如云存储服务、文件共享平台等。在C#中,我们可以利用System.IO命名空间中的FileStream类...

    C#上传文件返回文件名称

    你可以创建一个POST请求,将文件流作为请求体的一部分发送。 3. **Multipart/form-data**:为了上传文件,需要设置请求头的`Content-Type`为`multipart/form-data`。这样可以在单个请求中发送多个部分,每个部分...

    Http文件上传下载(含进度条,下载上传速度)

    - `WebClient.UploadFile`方法可直接上传文件,`HttpClient`则需构造`MultipartFormDataContent`,将文件作为流添加。 4. **文件下载**: - `WebClient.DownloadFile`方法可实现文件下载,而`HttpClient`可通过`...

Global site tag (gtag.js) - Google Analytics