본문 바로가기
Language/Java

[Java] URL을 이용한 파일 업로드

by J4J 2021. 3. 15.
300x250
반응형

안녕하세요. J4J입니다.

 

이번 포스팅은 URL을 이용한 파일 업로드에 대해 적어보는 시간을 가져보려고 합니다.

 

이전에 2021.03.08 - [IT/Java] - [Java] URL을 이용한 이미지 업로드라는 포스팅을 작성한 적이 있는데 이번에 포스팅될 내용은 이미지뿐만 아니라 pptx, jar, txt 등의 다른 파일들도 업로드를 할 수 있습니다.

 

다른 말로는 이미지 업로드 방식의 상위 버전(?)일 수도 있겠습니다.

 

 

적용 방법

 

업로드 할 타겟 파일을 만들기 위해 텍스트 파일 하나를 첨부해보겠습니다.

 

uploadTestFile.txt
0.01MB

 

 

위의 파일을 다운로드하는 URL은 https://blog.kakaocdn.net/dn/bhK3bF/btqZ3fko0Nb/GXa1NlyVQzNhT4GYZDeoL1/uploadTestFile.txt?attach=1&knm=tfile.txt로 등록되어있습니다.

 

해당 파일을 소스코드만으로 업로드 할 수 있도록 구현해보겠습니다.

 

package fileUpload;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.net.URL;

public class usingURL {
	public static void main(String[] args) {
		BufferedInputStream bi = null;
		FileOutputStream fo = null;
		
		final String DOWNLOAD_URL = "https://blog.kakaocdn.net/dn/bhK3bF/btqZ3fko0Nb/GXa1NlyVQzNhT4GYZDeoL1/uploadTestFile.txt?attach=1&knm=tfile.txt";
		final String UPLOAD_PATH = "myFile";
		final int MAX_SIZE = 20 * 1024 * 1024; // 20MB
		
		try {
			File file = new File(UPLOAD_PATH);
			if(!file.exists()) { // 폴더가 존재하는지 확인
				file.mkdirs(); // 폴더 경로가 없을 경우 폴더 경로 생성
			}
			
			String fileName = "테스트메모장.txt"; 
			
			bi = new BufferedInputStream(new URL(DOWNLOAD_URL).openStream());
			fo = new FileOutputStream(UPLOAD_PATH + "/" + fileName); // 파일이 저장될 위치
			
			byte buffer[] = new byte[1024]; // 최대 1KB씩 저장
			int len;
			long fileSize = 0;
			
			while((len = bi.read(buffer, 0, buffer.length)) != -1) { // 파일을 읽으며 buffer에 최대 buffer길이만큼 저장
				fo.write(buffer, 0, len); // buffer의 0~len에 담긴 파일 내용을 저장
				fileSize = fileSize + len;
				
				if(fileSize > MAX_SIZE) { // 최대 범위를 초과할 경우 파일 업로드 종료
					break;
				}
			}
			
			fo.close();
			bi.close();
			
			if(fileSize <= MAX_SIZE) {
				System.out.println("파일 업로드 완료!");
				System.out.println("파일 크기: " + fileSize + "Byte");
			} else {
				new File(UPLOAD_PATH + "/" + fileName).delete();
				System.out.println("파일 최대 사이즈 초과로 파일 삭제 처리!");
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

 

반응형

 

 

실행 결과

 

코드를 작성한 뒤 실행할 경우 콘솔 창에 "파일 업로드 완료!"라는 문구와 파일 크기가 출력됩니다.

 

파일 업로드 결과

 

 

그리고 파일이 저장될 위치는 상대경로를 이용하여 "현재 경로/myFile"로 잡았기 때문에 자바 프로젝트를 새로고침 하면 "myFile"이라는 폴더가 새로 생겨있고 그 안에 "테스트메모장.txt"라는 파일로 저장이 되어 있는 것을 확인할 수 있습니다. (내용이 한글로 되어 있기 때문에 글씨가 깨져있으면 인코딩 설정하시면 됩니다)

 

파일 저장 경로

 

 

추가적으로 현재는 업로드할 수 있는 최대 사이즈를 20MB로 잡았기 때문에 MAX_SIZE변수를 1 * 1024(1KB)로 변경하여 다시 실행할 경우 아래와 같은 문구가 출력되고 파일이 사라지는 것을 확인할 수 있습니다. (파일 사이즈는 12267Byte = 12.2KB이기 때문)

 

파일 크기 초과할 경우

 

 

 

이상으로 URL을 이용한 파일 업로드에 대해 간단하게 알아보는 시간이었습니다.

 

읽어주셔서 감사합니다.

728x90
반응형

댓글