我需要创建一个实用程序来收集一组日志压缩它们并将它们附加到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也是一个选项..
答案 0 :(得分:1)
您必须在单独的线程中将数据写入int main()
{
base obj{}; // default ctor
base obj2{obj}; // copy ctor
}
并将其传输到ZipOutputStream
以供HttpClient读取。
InputStream