JSP文件上傳

概述:
文件上傳是網站中很常用的一個功能,下面是一個文件上傳的基本demo。
由於是使用的新版jar包,所以需要依賴以下幾個jar包:
catalina.jar
commons-fileupload-1.3.1.jar
commons-io-2.4.jar

public class UpLoadServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    /**
     * 該方法用於文件上傳
     * @jar catalina.jar commons-fileupload-1.3.1.jar commons-io-2.4.jar
     */
    public void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

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

        /*
         * 文件上傳邏輯
         */
        //創建DiskFileItemFactory對象,爲解析器提供解析時的一些缺省配置
        DiskFileItemFactory dfif = new DiskFileItemFactory();
        //創建解析器
        ServletFileUpload sfu = new ServletFileUpload(dfif);
        //使用解析器解析分析器
        try {
            //解析request請求
            List<FileItem> items = sfu.parseRequest(request);

            for(FileItem item : items) {
                //如果是普通表單類
                if(item.isFormField()) {
                    continue;
                }
                //執行上傳文件動作
                //根據servlet上下文獲得服務器中實際物理路徑
                //此處可以更改爲其他另存爲的路徑
                String path = getServletContext().getRealPath("/upload");
                //獲取文件名
                String fileName = item.getName();
                //獲取文件後綴
                String fileSuffix = fileName.substring(fileName.lastIndexOf("."));
                //設置當前系統時間毫秒數的值爲文件名(無需考慮同步,機率極其低)
                String newName = Calendar.getInstance().getTimeInMillis()+fileSuffix;

                //File.separator是獲取一個兼容操作系統路徑的"/"
                File file = new File(path+File.separator+newName);

                try {
                    //寫入文件
                    item.write(file);
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        } catch (FileUploadException e) {
            e.printStackTrace();
        }

    }

}

jsp頁面代碼

<!-- enctype="multipart/form-data"表示不對上傳的消息進行編碼 -->
    <form action="upload.do" enctype="multipart/form-data" method="post">
    <input type="file" name="fileName">
    <input type="submit" value="提交">

這裏注意:上傳後的文件是上傳到TomCat中該的項目的目錄中的upload文件夾,如果將TomCat上項目移除,上傳的文件也會隨之消失。

發佈了51 篇原創文章 · 獲贊 41 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章