안녕하세요. J4J입니다.
이번 포스팅은 URL을 이용한 파일 업로드에 대해 적어보는 시간을 가져보려고 합니다.
이전에 2021.03.08 - [IT/Java] - [Java] URL을 이용한 이미지 업로드라는 포스팅을 작성한 적이 있는데 이번에 포스팅될 내용은 이미지뿐만 아니라 pptx, jar, txt 등의 다른 파일들도 업로드를 할 수 있습니다.
다른 말로는 이미지 업로드 방식의 상위 버전(?)일 수도 있겠습니다.
적용 방법
업로드 할 타겟 파일을 만들기 위해 텍스트 파일 하나를 첨부해보겠습니다.
위의 파일을 다운로드하는 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을 이용한 파일 업로드에 대해 간단하게 알아보는 시간이었습니다.
읽어주셔서 감사합니다.
'Language > Java' 카테고리의 다른 글
[Java] NodeJS와 매핑되는 AES 암호화 (Feat. React) (0) | 2021.11.02 |
---|---|
[Java] URLConnection을 이용한 API 호출 (8) | 2021.10.02 |
[Java] Jsoup을 이용한 html 파싱 (0) | 2021.03.09 |
[Java] URL을 이용한 이미지 업로드 (0) | 2021.03.08 |
[Java] 자바기초 - 컬렉션(Collection) (0) | 2020.12.31 |
댓글