我正在使用Spring Boot在Java中创建一个项目。
重点是接收转换为流的图像,而我的代码将此图像转换为pdf文件,并将该pdf作为流发送回。
尽管进行了分析,但我还是无法超越起点,无法接受。
在这里,您会看到我对正在运行的项目的邮递员呼叫的摘要
我的控制器如下所示:
@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();
}
}
}