728x90
반응형
환경
no Spring
only JAVA
추가파일
파일 업로드를 하기 위해서
commons-fileupload-1.2.2.jar
commons-io-2.11.0.jar
파일 두개가 필요하다.
- download link -
https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload/1.2.2
https://mvnrepository.com/artifact/commons-io/commons-io/2.11.0
버전은 그냥 내가 쓴 거 올려놨다.
WEB-INF/lib 하위에 추가한다.
<form name="fileForm" id="fileForm" method="post" enctype="multipart/form-data">
<input type="file" name="thisFile"/>
<input type="button" onclick="upload();" value="업로드" />
</form>
enctype="multipart/form-data" 필수
코드
function submit(){
var form = $('#form')[0];
var data = new FormData(form);
$.ajax({
type: "POST",
enctype: 'multipart/form-data',
url: "<%=request.getContextPath()%>/upload.jsp",
data: data,
processData: false,
contentType: false,
dataType: "json",
success: function (data) {
if(data.result == "true"){
alert("파일 업로드 성공!");
}else{
alert("파일 업로드 실패!")
}
},
error: function (e) {
console.log("ERROR : ", e);
alert("파일 업로드 실패!");
}
});
}
<%
String result = FileUtil.uploadFiles(request, "type1");
%>
package project.util;
import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Date;
import java.text.SimpleDateFormat;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class FileUtil {
public static String uploadFiles(HttpServletRequest request, String key) throws Exception {
String result = "";
String filePath = "";
String pathCate = "";
String encoding = "UTF-8";
Map<String, String> articleMap = new HashMap<String, String>();
System.out.println("FileUtil.uploadFiles START request >>" + request);
if("type1".equals(key)) pathCate = "upload_type"; //보내는 키에 따라 파일명을 구분한다.
else pathCate = "etc";
filePath = System.getProperty("user.home") + "\\Documents\\" + pathCate + System.getProperty("file.separator");
//저장되는 경로는 C드라이브/사용자/내문서/파일/
SimpleDateFormat dateFormat = new SimpleDateFormat ("yyyyMMddHHmmss");
Date time = new Date();
String timestamp = dateFormat.format(time);
File currentDirPath = new File(filePath);
if (!currentDirPath.isDirectory()) currentDirPath.mkdirs(); //폴더가 없으면 생성
DiskFileItemFactory factory = new DiskFileItemFactory();
/*제약조건 생성*/
factory.setSizeThreshold(1024*1024*1); //업로드 메모리크기
factory.setRepository(currentDirPath); //업로드 공간
ServletFileUpload upload = new ServletFileUpload(factory); //새 파일 업로드 핸들러
upload.setHeaderEncoding(encoding);
List<FileItem> items = upload.parseRequest(request); //요청 구문 분석
System.out.println("FileUtil.uploadFiles items >>" + items);
Iterator<FileItem> iter = items.iterator();
while(iter.hasNext()) {
FileItem item = iter.next();
if(!item.isFormField()){
String fieldNameName = item.getFieldName();
String fileName = item.getName();
File uploadFile = new File(currentDirPath + "/" + timestamp + "_" + fileName);
articleMap.put(fieldNameName, fileName);
item.write(uploadFile);
result = uploadFile.getAbsolutePath();
}
}
return result;
}
}
필요한게 있으면 차차 추가되거나 수정될 예정이다.
Ref
https://lessoncoding.tistory.com/34
728x90
반응형
'Programming > java' 카테고리의 다른 글
[log4j2] log4j + mybatis 쿼리 로그 찍기 (0) | 2022.04.02 |
---|---|
[log4j] java log4j2 적용하기 / log4j2 properties / log4j 옵션, 설정 (0) | 2022.04.02 |
[java]FileUpload할때 내문서 경로 가져오기 (0) | 2022.03.29 |
proxy designe pattern (0) | 2022.01.26 |
post와 get (0) | 2021.10.12 |