我有一个休息的客户发送多部分表单数据。我正在将图像发送为“应用程序/八位字节流”。图像类型为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字段之前,我将输入流转换为文件。现在创建的文件非常完美。

10-06 10:54