// 코드 입력
package com.jsonobject.example;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.RandomStringUtils;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
@RestController
@RequestMapping("/attachments")
public class AttachmentController {
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity uploadAttachment(@RequestPart MultipartFile sourceFile) throws IOException {
String sourceFileName = sourceFile.getOriginalFilename();
String sourceFileNameExtension = FilenameUtils.getExtension(sourceFileName).toLowerCase();
File destinationFile;
String destinationFileName;
do {
destinationFileName = RandomStringUtils.randomAlphanumeric(32) + "." + sourceFileNameExtension;
destinationFile = new File("C:/attachments/" + destinationFileName);
} while (destinationFile.exists());
destinationFile.getParentFile().mkdirs();
sourceFile.transferTo(destinationFile);
UploadAttachmentResponse response = new UploadAttachmentResponse();
response.setFileName(sourceFile.getOriginalFilename());
response.setFileSize(sourceFile.getSize());
response.setFileContentType(sourceFile.getContentType());
response.setAttachmentUrl("http://localhost:8080/attachments/" + destinationFileName);
return new ResponseEntity<>(response, HttpStatus.OK);
}
@NoArgsConstructor
@Data
private static class UploadAttachmentResponse {
private String fileName;
private long fileSize;
private String fileContentType;
private String attachmentUrl;
}
}