Set up picture upload mechanism.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user