ETC

    스프링 시큐리티를 이용한 로그인

    스프링 시큐리티를 이용한 로그인

    실행 결과 1) boardList에서 글작성 클릭 시 로그인 창 출력 로그인을 하지 않아도 글을 보거나 게시판 목록 접근 가능하지만 글 등록은 로그인하여야 함 2) ROLE_ADMIN 권한을 갖고 있는 아이디 비밀번호로 접속 3) 게시글 작성 4) 해당 게시글 확인 5. 테이블 설계 ▶member 테이블 create table member( userid varchar(50) primary key, userpw varchar(100) not null, username varchar(100) not null, regdate datetime not null default current_timestamp, updatedate datetime, enabled char(1) default '1' ); ▶member..

    [springMVC + Ajax] 게시판 첨부파일 추가

    테이블 추가 ▶attach 테이블 create table attach( uuid varchar(100) primary key, uploadPath varchar(200) not null, fileName varchar(100) not null, fileType char(3) default 'I', board_id bigint ); ALTER TABLE attach ADD FOREIGN KEY(board_id) REFERENCES board(id); uuid: UUID가 포함된 파일 이름 uploadPath: 실제 파일이 업로드된 경로 fileName: 파일 이름 fileType: 파일 종류, 이미지 파일 여부 확인 board_id: 해당 게시물 번호 저장(board 테이블, 외래키 역할) DTO ▶Boa..

    Spring + Ajax 파일 다운로드 시 Internet Explorer, Edge에서 한글이름 깨짐

    기존 코드 @GetMapping(value = "/download", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) @ResponseBody public ResponseEntity downloadFile(String fileName) { Resource resource = new FileSystemResource("D:\\upload\\" + fileName); String resourceName = resource.getFilename(); HttpHeaders headers = new HttpHeaders(); try { headers.add("Content-Disposition", "attachment; filename=" + new String(re..

    Spring + Ajax 파일 다운로드

    첨부파일 다운로드 UploadController.java @GetMapping(value = "/download", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) @ResponseBody public ResponseEntity downloadFile(String fileName) { Resource resource = new FileSystemResource("D:\\upload\\" + fileName); String resourceName = resource.getFilename(); HttpHeaders headers = new HttpHeaders(); try { headers.add("Content-Disposition", "attachment; ..

    Spring + Ajax 섬네일 파일 생성, 이미지 파일인지 구분, 이미지 클릭 시 원본 이미지 출력

    섬네일 Thumbnailator 라이브러리를 사용하하여 섬네일 파일 생성 설정 ▶pom.xml net.coobird thumbnailator 0.4.8 이미지 파일인지 구분 섬네일은 이미지 파일에만 적용할 수 있기 때문에 이미지 파일인지 구분한다. 아래 코드에 이미지 파일인 경우 섬네일 파일을 생성하는 것을 확인할 수 있다. private boolean checkImageType(File file) { try { String contentType = Files.probeContentType(file.toPath()); return contentType.startsWith("image"); } catch (IOException e) { e.printStackTrace(); } return false; } ..

    Spring + Ajax 중복된 파일 이름 해결

    중복된 파일 이름 해결하는 아이디어 파일 업로드 시간을 이용하는 방법 UUID를 이용해 중복이 발생할 가능성이 적은 문자열을 생성하는 방법 1. 파일 업로드 시간을 이용해 파일 생성 private String getFolder() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date = new Date(); String str = sdf.format(date); return str.replace("-", File.separator); } @PostMapping("/uploadAjaxAction") public void uploadAjaxPost(MultipartFile[] uploadFile) { String uploadFolder..

    Spring + Ajax 파일 확장자, 크기 제한 (Ajax)

    var regex = new RegExp("(.*?)\.(exe|sh|zip)$"); var maxSize 10485760; // 10MB function checkExtension(fileName, fileSize) { if (fileSize > maxSize) { alert("파일 사이즈는 10MB 미만이어야합니다."); return false; } if (regex.test(fileName)) { alert("해당 파일의 종류로는 업로드 안됩니다."); return false; } return true; } $("#uploadBtn").on("click", function(e) { var formData = new FormData(); var inputFile = $("input[name='uplo..

    Spring + Ajax 파일 업로드

    서버에서 첨부파일 처리 방식 cos.jar 2002년에 개발이 종료되어, 더 이상 잘 사용되지 않음 commons-fileupload 가장 많이 사용되는 방식 자체적인 파일 업로드 처리 서블릿 3.0 이상부터 자체적인 파일 업로드 처리가 API 상에서 지원 첨부파일시 고려해야할 것들 해당 포스팅은 아래 고려사항들을 적용하여 구현했습니다. 각 링크타고 들어가 포스팅을 읽어보는 것이 도움됩니다. 동일한 이름으로 파일 업로드 시 기존 파일이 사라지는 문제 이미지 파일의 경우 원본 파일의 용량이 큰 경우 섬네일 이미지를 생성해야 하는 문제 이미지 파일과 일반 파일을 구분해서 다운로드 혹은 페이지에서 조회하도록 처리하는 문제 첨부파일 공격에 대비하기 위한 업로드 파일의 확장자 제한 스프링 설정 서블릿 3.0 이상..