괴발개발
<ZAVA I.O 사용해서 파일 복사하는 2번째 방법> 본문
PartsUploadUtil util = new PartsUploadUtil(req);
String fileName = util.getFileName("photo");
InputStream is = util.getStream("photo");
BufferedInputStream bis = new BufferedInputStream(is);
FileOutputStream fos = new FileOutputStream("C:/img/"+fileName);
BufferedOutputStream bos = new BufferedOutputStream(fos);
int size = (int) util.getFileSize("photo");//1) 파일 사이즈 읽어주고
//2) 담아줄 똑같은 크기의 통 준비하고
byte[] arr = new byte[size]; // 어레이리스트랑 다르게 리스트는 사이즈 지정 해줘야 함.
System.out.println("배열 사이즈 :" +size);//1:1:29 ??
int result = bis.read(arr)//3) 그대로 집어넣어으면서 읽어버림
System.out.println(result);
bos.write(arr)
fos.flush();
fos.close();
*/
+ 첫번째 방법
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//받아온 요청을 문자와 파일로 구분해 준다.
PartsUploadUtil util = new PartsUploadUtil(req);
HashMap<String, String> params = util.getParams();// 일반 파라메터
System.out.println(params);
//파일로 부터 스트림을 생성해 낸다. // <- 이미 빨아드린거임
InputStream is = util.getStream("photo");
//파일 이름 추출
String fileName = util.getFileName("photo");
System.out.println("저장할 파일명: " + fileName);
/*여기부터 중요*/
// 1. (파일 경로)xx 저장할 위치 를 지정하고 객체화 한다.
//File file = new File("C:/img/"+fileName); -> 이거 안하고 걍 밑에다가
//2. 라이터(outputStream - 사진이니까!)를 만들고 , 파일, 인코딩, 트루 여부 지정하낟.
FileOutputStream fos = new FileOutputStream("C:/img/"+fileName);
//3. 라이터에 (content)넣고 라이트 메서드 써서 쓴다.
long start = System.currentTimeMillis();
int data;
while((data=is.read()) != -1) {
System.out.println("복사중 ...");
fos.write(data);
}
long end = System.currentTimeMillis();
fos.flush();
fos.close();
is.close();
req.setAttribute("msg", ((end-start)/1000)+"초");
RequestDispatcher dis = req.getRequestDispatcher("index.jsp");
dis.forward(req, resp);
//4. flush로 깨끗이 비운다.
//5. close로 닫느다.
'BACK END > JAVA' 카테고리의 다른 글
[퀴즈 정리] D-45 JAVA(tread 제어, 컨트롤) (0) | 2023.03.15 |
---|---|
[강의 정리]D45 JAVA(tread 제어, 컨트롤) (0) | 2023.03.15 |
varStatus와 .index (0) | 2023.03.07 |
[퀴즈 정리]D37 JAVA 문자열과 예외처리,Buffer,컬렉션 프레임워크 (0) | 2023.03.07 |
JSTL의 정리 (0) | 2023.03.05 |
Comments