是否可以在不写文件的情况下将字符串/字节数组作为文件进行POST?

时间:2015-11-18 00:18:41

标签: java file post multipartform-data

我有一个字符串是base64编码的gzip压缩png,它是来自Web服务的响应(它是一个运输标签)。我可以轻松地将其保存到文件中,然后POST将文件保存到端点。但是,如果我能以某种方式将png附加到请求并将其作为文件发送而不必保存并上传它,那么这似乎更实用。

第三方端点期望文件上传如下:

------WebKitFormBoundary6Pa1wvNhXthHAKpp
Content-Disposition: form-data; name="file"; filename="scaled.png"
Content-Type: image/png


------WebKitFormBoundary6Pa1wvNhXthHAKpp--

我知道我可以保存文件,然后发布文件

MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addPart("name", new FileBody(name));
String response = Request.Post(end).body(builder.build())
                    .execute().returnContent().toString();

有没有办法在不将png保存到文件系统的情况下获得相同的结果?

2 个答案:

答案 0 :(得分:1)

实现AbstractContentBody

ByteArrayBody

答案 1 :(得分:1)

如果您想以完全相同的格式将其发送到远程服务器,您可以始终获得两全其美......

MultiSelector

这种方法根本不必将整个文件拉入内存,只需将其从一台服务器传输到另一台服务器。

如果要解压缩(但不做其他任何操作),可以使用GZIPInputStream并完成相同的结果。

如果您需要操纵该实体,那么您别无选择,只能将其拉入内存(除非您可以以流方式进行操作)。