我有一个发送多部分表单数据的rest客户端。我发送的图像为“application / octet-stream”。图像类型为JPEG。
我应该如何在REST服务中正确接收这个?
目前我收到的是InputStream
。
我将此输入流转换为文件,但我无法打开它。试图打开它时说error in jpeg
。
输入流到文件转换逻辑
File image=File.createTempFile("image", ".JPEG");
FileUtils.copyInputStreamToFile(inputStream, image);
为了清楚起见,我正在共享其余的客户端存根和其他服务实现。
休息客户端存根
public class ImageTest
{
public static void main(String[] args) throws IOException
{
ResteasyClient client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target("http://localhost:8080/rest/AS/uploadreceipt");
MultipartFormDataOutput formData = new MultipartFormDataOutput();
Map<String, Object> json = new HashMap<>();
json.put("loyaltyId", "23");
formData.addFormData("json", json, MediaType.APPLICATION_JSON_TYPE);
FileInputStream fis = new FileInputStream(new File("/root/Downloads/index.jpeg"));
formData.addFormData("image", fis, MediaType.APPLICATION_OCTET_STREAM_TYPE);
Entity<MultipartFormDataOutput> entity = Entity.entity(formData, MediaType.MULTIPART_FORM_DATA);
Response response = target.request().post(entity);
}
休息服务处理
Map<String, Object> json = receiptUploadRequest.getFormDataPart("json", new GenericType<Map<String, Object>>() {});
InputStream image = receiptUploadRequest.getFormDataPart("image", new GenericType<InputStream>() {});
有什么我需要考虑的标题等等。因为它从rest client.something发送为八位字节流阻止创建文件.. 任何人都可以帮我转换发送的图像将客户端存根保留到文件 ....
答案 0 :(得分:1)
我正在将输入流对象设置为相应的pojo字段。这导致输入流中的损坏。 因此,在设置为pojo字段之前,我将输入流转换为文件。现在创建的文件非常完美。
答案 1 :(得分:0)
不要调用fis.read()
,因为它占用了图像流的第一个字节。
也许你应该在你的问题中包含将客户端输入流转换为文件的代码。