【发布时间】:2019-06-06 17:50:18
【问题描述】:
我正在将 jpg 文件上传到 spring 控制器端点。图像以 Base64 图像/jpg 的形式上传,它以 MultipartFile 的形式出现。我正在使用 Base64Decoder 解码输入流,这似乎可以解码,但是当我将其转换为 InputStream 以将其写入磁盘时,我可以看到它已被修改(根据我在调试器中看到的内容)。当我保存文件并打开它时,它说它是不受支持的文件类型。
我将多部分输入流直接写入磁盘,我在记事本中看到了 base64 编码。
数据:图像/ JPEG; BASE64,/ 9J / 4AAQSkZJRgABAQAAAQABAAD / 4QBgRXhpZgAASUkqAAgAAAACADEBAgAHAAAAJgAAAGmHBAABAAAALgAAAAAAAABHb29nbGUAAAMAAJAHAAQAAAAwMjIwAqAEAAEAAAAACAAAA6AEAAEAAAAABgAAAAAAAP / bAIQAAwICCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCggKCgoKCgoICAgKCgoICAgICgoICAgKCgoICA0NCggNCAgKCAEDBAQGBQYIBgYICA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI / 8AAEQgGAAgAAwEiAAIRAQMRAf / EAB0AAAIDAQEBAQEAAAAAAAAAAAMEAgUGAQAHCAn / xABJEAABAwIDBgQFBAIBAwMCAA8BAAIRAyEEMUEFElFhcfAGgZGhEyKxwdEHMuHxFEJSFSNiCDNyFoKSFyRDU6LCCTRjRHOy0uL / xAAbAQEBAQEBAQEBAAAAAAAAAAAAAQIDBAUGB // EACoRAQEBAQACAwADAAEEAwEBAQABEQIDcRIhMQQTsVEUIjJBBWGBwUIj / 9oADAMBAAIRAxEAPwCgrFsRw4ZfWEs2FXUN4C7p4c10702ML4 / M + p6jhzfqep / i4p0uS9Vtw8vddwRkX7t + ck1TdElWusVNVsRY3K1ngx2YFsz5rMYytJHX + 7rSeDWGf6XHqf8A0938eZ02zK8LlWoMzwP9LwCV2jxC81j7kswTAYsE2Xto1OAzVPslvzHT8K8LV P>
这是我的控制器和我的代码:
@PostMapping(value = "/saveBlueprintOrder")
public ResponseEntity<?> saveBlueprintOrder(@RequestParam MultipartFile blueprint,
@RequestParam(required = false) MultipartFile coversheet,
@RequestParam(required = false) MultipartFile logo,
@ModelAttribute BlueprintOrder blueprintOrder) {
if(coversheet != null) {
BASE64Decoder decoder1 = new BASE64Decoder();
byte[] imageBytes = decoder1.decodeBuffer(coversheet.getInputStream());
InputStream bis = new ByteArrayInputStream(imageBytes);
BufferedImage image = ImageIO.read(bis);
ImageIO.write(image, "jpg", new File("C:\\Users\\i58287\\Downloads\\coversheet.jpg"));
OutputStream stream = new FileOutputStream("C:\\Users\\i58287\\Downloads\\coversheet-test.jpg");
stream.write(imageBytes);
stream.close();
我只需要能够将此图像转换为输入流,这样我就可以在本地检查图像,此外我还需要将其发送到另一个 API。我错过了什么导致此图像无法打开?感谢您的帮助!
PS:我已经做了很多组合,所以这里显示了我尝试过的几个选项,BufferedImage image = ImageIO.read(bis) 不断返回一个空图像。
【问题讨论】:
-
您确定数据实际上代表的是 JPG 图像,而不是具有 .jpg 文件扩展名的不同图像类型?
-
是的,因为我正在从前端对其进行测试,因此我可以控制上传的文件。
标签: java file spring-mvc image-uploading