minlog
article thumbnail

๐Ÿ’ก  ๊ฒŒ์‹œํŒ์— ์ถ”๊ฐ€๋˜์–ด์•ผ ํ•  ๊ธฐ๋Šฅ 

ํŽ˜์ด์ง• ๊ตฌํ˜„ / ๋ฆฌ์ŠคํŠธ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„ /  ๊ฒŒ์‹œ๋ฌผ ์ €์žฅ ์‹œ ์ฒจ๋ถ€ํŒŒ์ผ ์ €์žฅ, ์ˆ˜์ •, ์‚ญ์ œ /  ์ƒ์„ธ ํŽ˜์ด์ง€ ์กฐํšŒ์ˆ˜ ์ถ”๊ฐ€ 

 

์ฒจ๋ถ€ํŒŒ์ผ ์ €์žฅ์œผ๋กœ ์ด๋ฒˆ์—๋Š” cos ๋Œ€์‹ ,  apache commons fileupload ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

์•„๋ž˜ ๋‘ ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›์•„ lib ํด๋”์— ๋„ฃ์–ด์ฃผ๋ฉด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

commons-fileupload-1.3.3.jar

commons-io-2.7.jar

 

 

 

 

๐Ÿซ FileUploadServlet.java

1. ๊ฒŒ์‹œ๋ฌผ ์ €์žฅ (์ฒจ๋ถ€ํŒŒ์ผ ์ถ”๊ฐ€)

package com.javaex.controller;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import com.javaex.dao.BoardDao;
import com.javaex.dao.BoardDaoImpl;
import com.javaex.util.WebUtil;
import com.javaex.vo.BoardVo;
import com.javaex.vo.UserVo;


@WebServlet("/fileUpload")
public class FileUploadServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static final String CHARSET = "utf-8";
    private static final String ATTACHES_DIR = "C:\\java_work\\java_fast\\mysite_jimin\\WebContent\\attaches";
    private static final int LIMIT_SIZE_BYTES = 1024 * 1024;
    
    
   

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		
	
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
		request.setCharacterEncoding(CHARSET);
        PrintWriter out = response.getWriter();
		
		
        
        
        
        // ํŒŒ์ผ ์„ค์ •
        File attachesDir = new File(ATTACHES_DIR);	
        DiskFileItemFactory fileItemFactory = new DiskFileItemFactory();
        fileItemFactory.setRepository(attachesDir);
        fileItemFactory.setSizeThreshold(LIMIT_SIZE_BYTES);
        ServletFileUpload fileUpload = new ServletFileUpload(fileItemFactory);
        
         
        String separator = null;
        String fileName = null;
        String fileName_sub = null;
        File uploadFile = null;
       
        
        
 
        try {
            List<FileItem> items = fileUpload.parseRequest(request);
           
            // ์ž‘์„ฑ์ž ๋ฒˆํ˜ธ 
     		UserVo authUser = getAuthUser(request);
     		int userNo = authUser.getNo();
            BoardVo vo = new BoardVo();
            vo.setUserNo(userNo);
            
           
			String title = items.get(0).getString(CHARSET);  // title ๊ฐ’ ๋ฆฌํ„ด
			String content = items.get(1).getString(CHARSET);// content ๊ฐ’ ๋ฆฌํ„ด
			
			vo.setTitle(title);
			vo.setContent(content);
       
       
           
           
           
           
            for (FileItem item : items) {
            	int a =+ 1;
                if (item.isFormField()) { //true ์ผ๋ฐ˜ ํ…์ŠคํŠธ
                    System.out.printf("ํŒŒ๋ผ๋ฏธํ„ฐ ๋ช… : %s, ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’ :  %s \n", item.getFieldName(), item.getString(CHARSET));
     
                } else {
                	//ํŒŒ์ผ 
                    System.out.printf("ํŒŒ๋ผ๋ฏธํ„ฐ ๋ช… : %s, ํŒŒ์ผ ๋ช… : %s,  ํŒŒ์ผ ํฌ๊ธฐ : %s bytes \n", item.getFieldName(), item.getName(), item.getSize());
                   
                    
                    
                    if (item.getSize() > 0) {
                    	
                        separator = File.separator;
                        int index =  item.getName().lastIndexOf(separator);
                        fileName = item.getName().substring(index  + 1);
                        uploadFile = new File(ATTACHES_DIR +  separator + fileName);
                        
                        fileName_sub = fileName;
                        if (uploadFile.exists()){
                            for(int k=0; true; k++){
                                //ํŒŒ์ผ๋ช… ์ค‘๋ณต์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•œ ์ผ๋ จ ๋ฒˆํ˜ธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ
                                //ํŒŒ์ผ๋ช…์œผ๋กœ ์กฐํ•ฉ
                            	uploadFile = new File(ATTACHES_DIR, "("+k+")"+fileName);
                                //์กฐํ•ฉ๋œ ํŒŒ์ผ๋ช…์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์ผ๋ จ๋ฒˆํ˜ธ๊ฐ€
                                //๋ถ™์€ ํŒŒ์ผ๋ช… ๋‹ค์‹œ ์ƒ์„ฑ
                                if(!uploadFile.exists()){ //์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
                                    fileName = "("+k+")"+fileName;
                                    break;
                                }
                            }
                        }
                        
                        vo.setFilesize((int)item.getSize());
                        vo.setFilename(fileName);
                        vo.setFileName_sub(fileName_sub);
                        
                        item.write(uploadFile);
                        
                    } //item.getSize()
                }
                
            }//for ๋ฌธ
            System.out.println("ํŒŒ์ผ์—…๋กœ๋“œ ์ค‘ ----------------");          
			
			System.out.println(vo);
            BoardDao dao = new BoardDaoImpl();
            dao.insert(vo);
			
    		
            
            System.out.println("ํŒŒ์ผ์—…๋กœ๋“œ ์™„๋ฃŒ---------");
            
            
            
            
            System.out.printf("fileName : "+ fileName + "/fileName_sub : "+ fileName_sub + " / uploadFile : "+ uploadFile +" / separator" + separator);
            WebUtil.redirect(request, response, "/mysite_jimin/board");
            
            out.println("<h1>ํŒŒ์ผ ์—…๋กœ๋“œ ์™„๋ฃŒ</h1>");
 
 
        } catch (Exception e) {
            // ํŒŒ์ผ ์—…๋กœ๋“œ ์ฒ˜๋ฆฌ ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ
            e.printStackTrace();
            out.println("<h1>ํŒŒ์ผ ์—…๋กœ๋“œ ์ค‘ ์˜ค๋ฅ˜๊ฐ€  ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.</h1>");
        }
        
		
		
		
		
	}

	// ๋กœ๊ทธ์ธ ๋˜์–ด ์žˆ๋Š” ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
	protected UserVo getAuthUser(HttpServletRequest request) {
		HttpSession session = request.getSession();
		UserVo authUser = (UserVo) session.getAttribute("authUser");

		return authUser;
	}

	

}

 

profile

minlog

@jimin-log

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!