如何在休息服务中接收以八位字节流类型发送的图像?

时间:2015-12-03 16:53:56

标签: java image file inputstream resteasy

我有一个发送多部分表单数据的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发送为八位字节流阻止创建文件.. 任何人都可以帮我转换发送的图像将客户端存根保留到文件 ....

2 个答案:

答案 0 :(得分:1)

我正在将输入流对象设置为相应的pojo字段。这导致输入流中的损坏。 因此,在设置为pojo字段之前,我将输入流转换为文件。现在创建的文件非常完美。

答案 1 :(得分:0)

不要调用fis.read(),因为它占用了图像流的第一个字节。

也许你应该在你的问题中包含将客户端输入流转换为文件的代码。