diff --git a/src/main/java/de/deadlocker8/budgetmaster/images/ImageFileExtension.java b/src/main/java/de/deadlocker8/budgetmaster/images/ImageFileExtension.java index 7b4e82d20947b52fc463e8221227bb91fba45317..d60e9895f23d46862698804b2f8df5d06bb409f5 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/images/ImageFileExtension.java +++ b/src/main/java/de/deadlocker8/budgetmaster/images/ImageFileExtension.java @@ -1,20 +1,24 @@ package de.deadlocker8.budgetmaster.images; +import org.springframework.http.MediaType; + import java.util.Optional; public enum ImageFileExtension { - PNG("png", "png"), - JPG("jpg", "jpeg"), - SVG("svg", "svg+xml"); + PNG("png", "png", MediaType.IMAGE_PNG), + JPG("jpg", "jpeg", MediaType.IMAGE_JPEG), + SVG("svg", "svg+xml", MediaType.valueOf("image/svg+xml")); private final String fileExtension; private final String base64Type; + private final MediaType mediaType; - ImageFileExtension(String fileExtension, String base64Type) + ImageFileExtension(String fileExtension, String base64Type, MediaType mediaType) { this.fileExtension = fileExtension; this.base64Type = base64Type; + this.mediaType = mediaType; } public String getFileExtension() @@ -27,6 +31,11 @@ public enum ImageFileExtension return base64Type; } + public MediaType getMediaType() + { + return mediaType; + } + public static Optional<ImageFileExtension> getByExtension(String extension) { for(ImageFileExtension currentExtension : values()) @@ -46,6 +55,7 @@ public enum ImageFileExtension return "ImageFileExtension{" + "fileExtension='" + fileExtension + '\'' + ", base64Type='" + base64Type + '\'' + + ", mediaType=" + mediaType + "} " + super.toString(); } } diff --git a/src/main/java/de/deadlocker8/budgetmaster/images/MediaController.java b/src/main/java/de/deadlocker8/budgetmaster/images/MediaController.java index 056ea1e370a1830bf1a4fd60c2f64df73ca2b545..ac42cd8f87c8d97f1fe0eb1531271b386fb8ac2b 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/images/MediaController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/images/MediaController.java @@ -9,6 +9,9 @@ import de.deadlocker8.budgetmaster.utils.ResourceNotFoundException; import de.thecodelabs.utils.util.Localization; import org.apache.commons.lang3.ArrayUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; @@ -106,8 +109,7 @@ public class MediaController extends BaseController } @GetMapping("/getImageByIconID/{ID}") - @ResponseBody - public byte[] getImageByIconID(@PathVariable("ID") Integer iconID) + public ResponseEntity<byte[]> getImageByIconID(@PathVariable("ID") Integer iconID) { Optional<Icon> iconOptional = iconService.getRepository().findById(iconID); if(iconOptional.isEmpty()) @@ -115,6 +117,12 @@ public class MediaController extends BaseController throw new ResourceNotFoundException(); } - return ArrayUtils.toPrimitive(iconOptional.get().getImage().getImage()); + final Image image = iconOptional.get().getImage(); + + final HttpHeaders headers = new HttpHeaders(); + headers.setContentType(image.getFileExtension().getMediaType()); + + final byte[] bytes = ArrayUtils.toPrimitive(image.getImage()); + return new ResponseEntity<>(bytes, headers, HttpStatus.CREATED); } }