我有一个发送多部分表单数据的休息客户端。我将图像作为“application/octet-stream”发送。图像类型为 JPEG。
我应该如何在 REST 服务中正确接收此信息?
目前我将其作为InputStream
接收。
我将此输入流转换为文件,但无法打开它。尝试打开它时显示 jpeg 错误
。
输入流到文件转换逻辑
File image=File.createTempFile("image", ".JPEG");
FileUtils.copyInputStreamToFile(inputStream, image);
为了清楚起见,我将分享其余的客户端 stub 和其余的服务实现。
剩余客户端 stub
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>() {});
有什么我需要考虑的东西,比如标题等..因为它从其余客户端作为八位字节流发送。有什么东西阻止创建文件..任何人都可以帮我转换从发送的图像将客户端 stub 保存到文件....
最佳答案
我将输入流对象设置为相应的 pojo 字段。这导致输入流损坏。 因此,在设置为 pojo 字段之前,我将输入流转换为文件。现在创建的文件是完美的。
关于java - 如何在其余服务中接收以八位字节流类型发送的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34071762/