我正在使用Spring Boot在Java中创建一个项目。
重点是接收转换为流的图像,而我的代码将此图像转换为pdf文件,并将该pdf作为流发送回。
尽管进行了分析,但我还是无法超越起点,无法接受。

在这里,您会看到我对正在运行的项目的邮递员呼叫的摘要
java - 通过REST POST通过Java Spring Boot将图像作为流接收-LMLPHP

我的控制器如下所示:

@RestController
public class Controller {
    @PostMapping(value = "/convert/{format}", consumes = "application/octet-stream", produces = "application/octet-stream")
    @ResponseBody
    public void convert(RequestEntity<InputStream> entity, HttpServletResponse response, @PathVariable String format, @RequestParam Map<String, String> params) throws IOException {
        if ("pdf".equalsIgnoreCase(format)) {
            PDFConverter cnv = new PDFConverter();
            /*cnv.convert(entity.getBody(), response.getOutputStream(), params);*/
            response.setContentType("application/octet-stream");
            response.getOutputStream().println("hello binary");
        } else {
            // handle other formats
            throw new IllegalArgumentException("illegal format: " + format);
        }
    }
}


在这种情况下,我会忽略什么?

最佳答案

我找到了解决方案,在我使用RequestEntity<InputStream> entity的控制器中,这给出了错误。将其更改为HttpServletRequest request后,它可以工作。

@RestController
public class Controller {
    @RequestMapping(value="/convert/{format}", method=RequestMethod.POST)
    public @ResponseBody void convert(HttpServletRequest request, HttpServletResponse response, @PathVariable String format, @RequestParam Map<String, String> params) {
        try{
            if ("pdf".equalsIgnoreCase(format)) {
                PDFConverter cnv = new PDFConverter();
                response.setContentType("application/pdf");
                cnv.convert(request.getInputStream(), response.getOutputStream(), params);
            } else {
                // handle other formats
                throw new IllegalArgumentException("illegal format: " + format);
            }
        } catch (IllegalArgumentException | IOException e) {
            e.printStackTrace();
        }
    }
}

10-08 02:49