[Nginx] 파일 업로드시 오류

Walter Mitty·2023년 6월 28일
0

분명 파일 확장자랑 파일 사이즈를 잘 설정 해놨는데도 배포 후 5MB 이하만 들어가는걸 확인했다.

import org.springframework.beans.factory.annotation.Value;

@Slf4j
@Component
public class FileUtil {
    public static String salt;

    @Value("${file.salt}") // Lombok거 아님!  
    public void setSalt(String salt) {
        FileUtil.salt = salt;
    }

    private static final String[] ALLOW_FILE_EXT = {
        "jpg",
        "jpeg",
        "png"
    };

    public static FileInfoDTO getFileInfoDTO(MultipartFile file, String uploadPath) {
        if (file == null) return null;

        long fileSize = 20 * 1024 * 1024; // 파일 사이즈 설정!

        long size = file.getSize();

        // 업로드 파일 사이즈 체크
        if (size == 0) {
            throw new BadRequestException("파일 사이즈가 올바르지 않습니다.");
        } else if (size > fileSize)
            throw new BadRequestException("파일 사이즈는 " + fileSize + "byte까지 업로드 가능합니다.");

        // 기존 파일명
        String originFileName = file.getOriginalFilename();
        if (originFileName == null) throw new BadRequestException("파일명은 필수입니다.");

        // 확장자 제외한 기존 파일명
        String originFileNameNotExt = originFileName.substring(0, originFileName.lastIndexOf("."));

        // 업로드 파일 확장자 체크
        // 파일 확장자
        String ext = originFileName.substring(originFileName.lastIndexOf(".") + 1).toLowerCase();
        if (Arrays.stream(ALLOW_FILE_EXT).noneMatch(ext::equals))
            throw new BadRequestException(String.join(", ", ALLOW_FILE_EXT) + " 파일만 업로드 가능합니다.");

        // 업로드 파일명 암호화
        String encodedName = SHA256Util.getEncrypt(originFileName + "_" + System.currentTimeMillis(), salt);

        // 업로드 파일 경로
        String path = uploadPath == null ? "upload/attachments/" + encodedName + "." + ext : uploadPath + "/" + encodedName + "." + ext;

        return FileInfoDTO.builder()
            .originFileName(originFileNameNotExt)
            .encodedName(encodedName)
            .path(path)
            .ext(ext)
            .contentType(file.getContentType())
            .size(fileSize)
            .build();
    }
}

알고보니까 배포를 하고 나면 Nginx에서도 파일 사이즈에 대한 설정을 해줘야한다.
안해주면 기본 Default인 5MB가 된다.

http{
		client_max_body_size 10M;
    }

추가해주기!

0개의 댓글