收集日志ZIP并上传到没有临时文件的Http服务

时间:2016-12-06 05:17:11

标签: java jira nio apache-httpclient-4.x

我需要创建一个实用程序来收集一组日志压缩它们并将它们附加到jira。

我打算使用httpclient 4.5。 (有NIO支持)jira API在这里不是问题。

我想通过zip流直接从文件系统流式传输文件并上传到jira,而无需在文件系统上创建临时zip文件。

我发现java API在这种情况下令人困惑,但未能弄清楚用法。 看起来这种情况看起来像是一个很好的候选人使用java NIO(也许是一个频道?)但是找不到好的例子。

作为一个起点,我创建了一个上传一个文件的例子,但我没有把它带到Zip流的下一步。

HttpClient httpClient = createHttpClient();


final String issueUriAttach = issueUri + "/" + "attachments";

HttpPost postRequest = new HttpPost(issueUriAttach);
final FileInputStream fileInputStream = new FileInputStream("README.md");
InputStream in = new InputStream() {
    @Override
    public int read() throws IOException {
        return 0;
    }

    @Override
    public int read(byte[] b, int off, int len) throws IOException {
        return fileInputStream.read(b,off,len);
    }
};
InputStreamBody inputStreamBody = new InputStreamBody(in,"README.csv");
HttpEntity reqEntity = MultipartEntityBuilder.create()
        .setContentType(ContentType.MULTIPART_FORM_DATA)
        .addPart("file", inputStreamBody)
        .build();
postRequest.setHeader(getAuthHeader());
postRequest.setHeader(getNocheckHeader());

postRequest.setEntity(reqEntity);
final HttpResponse response = httpClient.execute(postRequest);

正如我所说,我不仅限于java I / O,java NIO也是一个选项..

1 个答案:

答案 0 :(得分:1)

您必须在单独的线程中将数据写入int main() { base obj{}; // default ctor base obj2{obj}; // copy ctor } 并将其传输到ZipOutputStream以供HttpClient读取。

InputStream