我有一个休息的客户发送多部分表单数据。我正在将图像发送为“应用程序/八位字节流”。图像类型为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>() {});
我有什么需要考虑的,例如标头等。因为它是从其余客户端作为八位字节流发送的。某事阻止了文件的创建。任何人都可以帮我将其余客户端存根发送的图像转换为文件....
最佳答案
我将输入流对象设置为对应的pojo字段,这导致输入流损坏。
因此,在设置为pojo字段之前,我将输入流转换为文件。现在创建的文件非常完美。