[Day50_1]

NA YE SOM·2023년 9월 13일


-> 파일 첨부시 : servlet단에서는 library 도움 받음
-> servlet단은 내장되어있음







ex09_up_down



action에다가 servlet경로 적기

post 메소드 필수 ->없으면 파일첨부 x

enctype="multipart/form-data" 필수

httpservletrequest (x)(지금까지는)

-> 바꿔서
-> multipart/form servlet request





-> doPOST로 호출해도
어차피 doGET으로 모인다






HTML 폼(form) : enctype 속성, multipart/form-data의미 : HTML 폼을 POST 방식으로 전송할때

multipart/form-data : 파일(<input type="file">)이 포함된 폼을 전송할 때 사용 

-> "multipart/form-data"는 파일 업로드가 없는 폼에도 사용할 수 있다. 다만, "multipart/form-data"는 파일 전송을 위해 추가적으로 표시되는 요소들이 있기 때문에 "application/x-www-form-unlcencoded"보다 기본 데이터가 더 커지기 때문에 짧은 데이터 전송에는 비효율적이다.
-> 파일 전송(input type="file")이 없으면 "application/x-www-form-urlcencoded" 또는 "enctype"을 미표기하는 것이 가장 효율적인 방법이다.
링크텍스트



-> storage 다 지우기

-> 1024 => 2의 10승
-> kbyte -> megabyte -> gigabyte

파일명은 library가 바꿈 -> 동일한 이름만 안나오면 됨

-> c드라이브 밑에 stroage 첨부파일이 복사되었음



리눅스는 경로가 하나임(C드라이브X D드라이브 X)


-> attach이렇게 하면 안됨




-> 파일이름에 encoding처리도 해야함
(파일이름에 한글 그대로 올리면 encoding깨짐)
-> 아예 저장할때는 이름을 바꿔서 올림

#,##0 : 숫자 형식 지정 패턴 중 하나

# : 숫자 자릿수 , # : 숫자가 있으면 해당 자리에 숫자를 표시하고 숫자가 없으면 빈자리로 남김

, : 천 단위로 구분 기호로 사용, 숫자가 천단위를 넘어갈 때마다 쉼표가 추가됨

0 : 숫자가 없을때 0으로 표시도리 자리 표시자, 숫자가 없을 경우에도 해당 자리에 0이 표시된다.

1234567 -> 1,234,567 ("#,##0" 포맷팅시)



  1. 응답 데이터 타입과 인코딩

태그 만들때 : 만들고 싶은 태그만 만들기!


listfile - > 입력,출력 (자바파일에서 directory 지정해서 파일명 싹 가져오는 파일)



각각의 목록 이름을 a태그로 묶어서 클릭하면 다운로드도 해보고 하는것-> C드라이브가 지금은 서버 공간임

(서버 공간에 있는것을 사용자들에게 다운로드 시켜준다)

다운로드를 수행할 경로를 만들기

다운로드 서블릿 만들기


-> 응답을 우리가 만들어서 하는것

-> 다운로드 파라미터 name임
-> 인코딩 먼저 하기

다운로드 하기위한 링크를 모두 만들어놓은 상태



path 전달(이름 + directory 같이 묶여있는것)



-> 파라미터 이름 : path로 바꾸기



다운로드한 읽어들일 파일은 만듦

응답헤더(Content-Disposition), attachment -> response.setHeader("Content-Disposition","attachment");

Disposition : 기질, 성향, 배치, 배열 뜻
-> HTTP Response Header에 들어가는 Content-Disposition은 HTTP Response Body에 오는 컨텐츠의 기질/성향을 알려주는 속성이다.
-> defaul값은 inline으로 web에 전달되는 data라고 생각하면 됨




substring : 문자열 자르기 : 문자열의 특정 부분을 잘라내는데 사용함


str.substring(2); -> llo 반환
str.substring(5); -> index + 1 값을 starIndex로 지정하면, 빈 문자열을 리턴한다.
str.substring(-1);
str.substring(6);
-> 음수값이나 범위를 벗어나는 값을 입력하면 StringIndexOutOfBoundException 발생함

기본값 : 크롬의 다운로드 폴더에 알아서 저장됨
(ex) cos library 도 다운로드 받을 때 그냥 받아진것처럼

읽어서 byte배열에 보관하는 코드

lastIndexOf(searchValue[,fromIndex])

  • fromIndex로부터 역순으로 탐색하여 최초의 Index를 반환하고 존재하지 않으면 -1을 반환한다.
  • 문자열을 탐색할 때 대소문자를 구분한다.
  • 배열에서도 사용 가능하다

(1) searchValue : 탐색할 문자열, 빈값인 경우 fromIndex(+Infinity) 반환

let str = 'hello world';
str.lastIndex('1'); //9 -> 문자열 전체를 기준으로 탐색하여 우측에서 첫번째로 존재하는 l의 index는 9이므로 9를 반환한다 
str.lastIndex('L'); // -1 -> 대문자 L은 문자열에 존재하지 않으므로 -1을 반환한다. 
str.lastIndex('a'); // -1 -> a는 문자열에 존재하지 않으므로 -1을 반환한다. 

(2) fromIndex(optional)

  • 기본값은 +Infinity 이다.
  • fromIndex가 문자열보다 큰 경우 모든 문자열을 탐색한다.
  • fromIndex가 음수인 경우 0을 지정한 것과 동일하다.
let str = 'hello world';
str.lastIndexOf('l',2); //2 -> fromIndex가 2이므로 index2(hel)역순으로 탐색한다. 
str.lastIndexOf('l',3); //3 -> fromIndex가 3인 경우 문자열 'hell'에서 l을 탐색하여 index3을 반환한다. 
str.lastIndexOf('l',10); //9 -> fromIndex가 10인 경우 문자열 'hello world'에서 l을 탐색하여 index9을 반환한다.

(3) 배열의 경우 배열 index를 반환

let arr = ['apple', 'banana', 'orange', 'banana'];
arr.lastIndexOf('banana',2); //2 

링크텍스트







-> 나중에는 COPY하는 메소드 있음

-> 목록을 보려면 계속 첨부해야하는 단점이 있음

내용은 안깨짐 -> 이름만 의도치 x


Front 작업

1.첨부했을때 첨부파일 미리보기

2.이미지 첨부만 가능하다고 가정하고 확장자 제한하기

1장의 upload down 끝
2장 jsp 들어감
(html안에 java코드 넣을 수 있음 -> servlet안만들고 jsp하나가지고 다 만들 수 있음)
-> 필요하면 java코드 끼워넣음

<순서>

servlet -> jsp(중급) -> MVC 패턴 -> Oracle 가지고 MVC패턴에 맞춰서 CRUD 들어감

spring framwork(고급) -> MVC패턴과 CRUD 반복 연습함







★★★★final project가지고 가도 되는 코드

-> 50mega는 안넘고 이미지가 아닌것 첨부하기


-> 확인 누르면 첨부 취소됨

1.미리보기





-> img태그 만들고 src속성 넣은것



-> html로 바꿔서 덮어쓰기


-> 단일첨부만 헀음
(다중첨부는 Spring에서 하기)

★★★★final project: front에서 할 수 있는 것은 바뀌지 않음

★★★★파일첨부양식(final project)

profile
개발자 velog

0개의 댓글