본문 바로가기

학원 일기/학원-Spring

스프링0707

받은 파일을 업로드 /  응답까지 직접설정해주는 업로드방식  / 다운로드

 

 

해당페이지는 파일을 업로드하면 해당파일이 본인이 설정한경로에 지정한후

아래에 저장한 사진을 업로드할수 있다는것이다.

 

이전에는 저장까지 하였다.

 

$({)} 요청을 통해서 파일에 저장한다 까지 했다

 

1) getLIst()생성

2)html 태그의 게시물업로드 부분을 script문에서 동적으로 생성한다

3)동적으로 생성되는 값은  getList()안의 $.getJSON의 ajax호출로 받아온다

= 구글링결과 JSON으로반환받는 ajax 인것같다

 

4) 서비스,서비스임플,맵퍼,맵퍼xml작성후 SnsBoardVO를 반환받는다

- bno를 키로 나머지를 값으로 받게도는 구조인것같다

 

5) for문으로 html을 동적으로생성하고 data의 파일을가져오는 순간에 새로운기능이 필요하다

-파일이 저장된 경로에 접근하는것에 관련된 문제가 있는것같다 확실히 정리는 되지않는ㄷ

 

5-1) src="view/파일경로/파일이름" 형식으로 html코드가 생성되게한다 

5-2) 해당 요청을받는 controller를 생성한다

-@Response,@RequestMappint(value="view/{객체명}/{객체명}" 주입

-반환타입은 byte[] 매개변수는 @PathVariable로 받는다 ( ":.+" 를 넣어야 확장자명까지 받을수있다 ex) {fileName:.+ }

-byte[] result =null; 초기화후 try catch 구문에서 File file - new File(경로+폴더명);으로 받는다

- result변수에 FileCopyUtils.copyByteArray(file)로; 파일을 바이트로 변환후 반환한다

-반환된 데이터는 파일(여기선이미지)로 나타난다

 

6)getList()함수를 script문에서 즉시실행 그리고 등록버튼클릭시 한번더호출하게끔 설정한다

 

7) 다른방법으로는 직접 응답까지 설정해보낼수있다 위의내용에서

7-1) 반환타입을 ResponseEntity<byte[]>로 변경

7-2)HttpHeaders header = new HttpHeaders(); 생성후

7-3) header.add("Content-type" , Files.probeContentType(file.toPath());

-파일의 경로를 읽어 MIME타입(변환된 타입)을 헤더에저장)

7-4) 반환타입의 result변수에 = new ResponseEntoty(byte[]>(FileCopyUtils.copyByteArray(file),header, HttpStatis.OK);

- 각각 반환할데이터 ,응답헤더의 내용(아직 이해는안간다 어떤부분인지), 상태코드 이렇게 반환해준다

 

8) 마지막하나로

 

8-1) 위의 header.add("Content-type", Files.probeContentType(file.toPath() ));부분이

8-2)  header.add("Content-Disposition", "attachment; filename="+ fileName);로 변경

-여기서 알수있는것은 Content타입이름에도 전부의미가있다 그리고 파일을받아오는 방식 처리하는방식이 다를수있다는것이다 이부분은 이해하기 어렵지만 왜냐하면 전달값과 반환값은 똑같은데 중간에 달라진부분이있고 설명불가능하기 때문이다.

 

우선 방법이 있다는걸로만 그리고 libary 처음부터 설정할때 사용하지않는 값 경로로인한 오류조심하기!

'학원 일기 > 학원-Spring' 카테고리의 다른 글

타일즈뷰 만들기  (0) 2021.07.09
스프링0706  (0) 2021.07.07
스프링 20210705  (0) 2021.07.05
스프링0630  (0) 2021.07.01
06-29 스프링  (0) 2021.06.29