jspファイルアップロード(もう時代遅れで3編目を見る)


jspコード:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
 
  <body> 
                                                 <!-- encType      -->
    <form action="upImgServlet" method="post" encType=multipart/form-data>
        
          :
        <input type="text" name="description"/><br/>    :
        <input type="file" name="img"/>
        <input type="submit" value="  "/>
    </form>
  </body>
</html>

UpImgServiceletのコード:
public class UpImgServlet extends HttpServlet {

    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html");
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");

        // org.apache.commons.fileupload.DiskFileUpload         。
        DiskFileUpload du = new DiskFileUpload();
        du.setSizeMax(4194304); //         ,   4MB
        du.setSizeThreshold(4096);//         ,4 kb;
        // up   /WebRoot        
        du.setRepositoryPath(request.getSession().getServletContext()
                .getRealPath("/up"));//       

        //       
        try {
            List list = du.parseRequest(request);
            Iterator it = list.iterator();
            while (it.hasNext()) {
                org.apache.commons.fileupload.FileItem fileItem = (FileItem) it
                        .next();

                //        。       。
                if (fileItem.isFormField()) {
                    String name = fileItem.getFieldName();
                
                    //                。
                    java.io.BufferedReader br = new BufferedReader(
                               new InputStreamReader(fileItem.getInputStream()));
                    
                    //                     if()        。
                    if(name.equals("description")){
                        String contents =  br.readLine();
                        System.out.println(contents);
                        
                    }
                    
                }
                //    
                else {
                    //      ,         :
                    String fileName = fileItem.getName();
                    int index = fileName.lastIndexOf('.');
                    fileName = fileName.substring(index);
                    fileName = this.getFileName() + fileName;                                    //       
                    fileItem.write(new File(request.getSession().getServletContext().getRealPath("/img")+ "\" + fileName));
                    
                    System.out.println("    ");
                }
            }

        } catch (FileUploadException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        PrintWriter out = response.getWriter();

        out.flush();
        out.close();
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doGet(request, response);
    }

    public void init() throws ServletException {
        // Put your code here
    }

    //            。(   );
    String getFileName() {
        java.util.Calendar cal = Calendar.getInstance();

        int year = cal.get(Calendar.YEAR);
        int mon = cal.get(Calendar.MONTH);
        int day = cal.get(Calendar.DATE);
        int hour = cal.get(Calendar.HOUR);
        int min = cal.get(Calendar.MINUTE);
        int sec = cal.get(Calendar.SECOND);
        int mi = cal.get(Calendar.MILLISECOND);

        System.out.println("mon" + mon);
        System.out.println("day" + day);
        return "" + year + mon + day + hour + min + sec + mi;

    }

}

WebRootの下にupとimgディレクトリを新規作成します.
ここでupはキャッシュディレクトリである.imgはアップロードしたファイルに保存するディレクトリである.