[java] fileUpload 파일 업로드 유틸 만들기

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

 

파일 업로드 / 다운로드 구현 (1) - 파일 업로드

파일 업로드를 서버에서 편리하게 구현하기 위해서는 cos.jar 또는 Commons Fileupload.jar 와 Commons io.jar 를 다운받아야 사용할 수 있다. 여기서는 Commons Fileupload.jar, Commons io.jar를 사용하여 파..

lessoncoding.tistory.com

 

728x90
반응형