Я загружаю JPG в конечную точку контроллера пружины. Изображение загружается как Base64 image / jpg, которое входит в состав MultipartFile. Я декодирую входной поток с помощью Base64Decoder, который, кажется, декодирует его нормально, но когда я превращаю его в InputStream, чтобы записать его на диск, я вижу, что он был изменен (в соответствии с тем, что я вижу в отладчике). Когда я сохраняю файл и открываю его, он говорит, что это неподдерживаемый тип файла.
Я взял составной входной поток и записал его прямо на диск, и я вижу кодировку base64 в блокноте.
Данные: изображение / JPEG; base64, / 9J / 4AAQSkZJRgABAQAAAQABAAD / 4QBgRXhpZgAASUkqAAgAAAACADEBAgAHAAAAJgAAAGmHBAABAAAALgAAAAAAAABHb29nbGUAAAMAAJAHAAQAAAAwMjIwAqAEAAEAAAAACAAAA6AEAAEAAAAABgAAAAAAAP / bAIQAAwICCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCggKCgoKCgoICAgKCgoICAgICgoICAgKCgoICA0NCggNCAgKCAEDBAQGBQYIBgYICA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI / 8AAEQgGAAgAAwEiAAIRAQMRAf / EAB0AAAIDAQEBAQEAAAAAAAAAAAMEAgUGAQAHCAn / xABJEAABAwIDBgQFBAIBAwMCAA8BAAIRAyEEMUEFElFhcfAGgZGhEyKxwdEHMuHxFEJSFSNiCDNyFoKSFyRDU6LCCTRjRHOy0uL / xAAbAQEBAQEBAQEBAAAAAAAAAAAAAQIDBAUGB // EACoRAQEBAQACAwADAAEEAwEBAQABEQIDcRIhMQQTsVEUIjJBBWGBwUIj / 9oADAMBAAIRAxEAPwCgrFsRw4ZfWEs2FXUN4C7p4c10702ML4 / М + p6jhzfqep / i4p0uS9Vtw8vddwRkX7t + ck1TdElWusVNVsRY3K1ngx2YFsz5rMYytJHX + 7rSeDWGf6XHqf8A0938eZ02zK8LlWoMzwP9LwCV2jxC81j7kswTAYsE2Xto1OAzVPslvzHT8K8LV
Вот мой контроллер и мой код:
@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) продолжает возвращать нулевое изображение.