Set up picture upload mechanism.

This commit is contained in:
Florian THIERRY
2024-03-13 14:26:28 +01:00
parent ed766d4c8c
commit 0b00f9b0aa
16 changed files with 305 additions and 2 deletions

View File

@@ -0,0 +1,28 @@
package org.codiki.exposition.picture;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
@Component
public class MultipartFileConverter {
private final String tempPicturesForlderPath;
public MultipartFileConverter(@Value("${application.pictures.temp-path}") String tempPicturesForlderPath) {
this.tempPicturesForlderPath = tempPicturesForlderPath;
}
public File transformToFile(MultipartFile fileContent) {
File pictureFile = new File(String.format("%s/%s", tempPicturesForlderPath, UUID.randomUUID()));
try {
fileContent.transferTo(pictureFile);
} catch (IOException e) {
throw new RuntimeException(e);
}
return pictureFile;
}
}

View File

@@ -0,0 +1,35 @@
package org.codiki.exposition.picture;
import java.io.File;
import java.util.UUID;
import static org.springframework.http.MediaType.MULTIPART_FORM_DATA_VALUE;
import org.codiki.application.picture.PictureUseCases;
import org.codiki.domain.picture.model.Picture;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
@RestController
@RequestMapping("/api/pictures")
public class PictureController {
private final MultipartFileConverter multipartFileConverter;
private final PictureUseCases pictureUseCases;
public PictureController(
MultipartFileConverter multipartFileConverter,
PictureUseCases pictureUseCases
) {
this.multipartFileConverter = multipartFileConverter;
this.pictureUseCases = pictureUseCases;
}
@PostMapping(consumes = MULTIPART_FORM_DATA_VALUE)
public UUID uploadPicture(@RequestParam("file") MultipartFile fileContent) {
File pictureFile = multipartFileConverter.transformToFile(fileContent);
Picture newPicture = pictureUseCases.createPicture(pictureFile);
return newPicture.id();
}
}