1. 程式人生 > >java web 檔案上傳實現

java web 檔案上傳實現

使用jspsmart完成檔案上傳

用於向伺服器上傳的表單

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>檔案上傳</title>
    </head>
    <body>
    檔案上傳
    <hr>

    <%--enctype屬性 告訴servlet 表單提交的資料將會被編碼並且備多個部分,此時method以定位post--%>
<form action="servlets/UploadServlet" method="post" enctype="multipart/form-data"> 請選擇檔案上傳 <input type="file" name="myFile"> <input type="submit" value="上傳"> </form> ${msg} </body> </html>

可以看出這個jsp中平時的表單還是有些區別的。首先是enctype

屬性。該屬性告訴servlet這個表單提交的東西會被編碼成多個部分,並且其值一定是multipart/form-data,同時method的值一定是post

jspsmart介紹

  • public final void initialize(ServletConfig var1, HttpServletRequest var2, HttpServletResponse var3)

    在進行上傳之前,需要進行初始化操作,傳入當前 servlet 的 ServletConfig,HttpServletRequst, HttpServletResponse
    
  • public void upload()

    初始化完成後,實現上傳
    
  • public Files getFiles()

    獲取上傳的所有的檔案物件
    
  • public Files getFiles().getFile(i)

    獲取上傳的所有檔案物件的第 i 並返回一個File物件
    
  • public String getFileName()

    得到檔名
    
  • public void saveAs(String var1, int var2)

    將檔案進行儲存,引數1是儲存的路徑,引數2是儲存的方式有如下選擇
    public static final int SAVE_VIRTUAL = 1; 按照硬碟上的無力路徑儲存
    public static final int SAVE_PHYSICAL = 2; 按照網站的虛擬路徑儲存
    

Servlet類的實現

/**
 * Project: UploadFile
 * Created by Zdd on 2018/3/14.
 */
public class UploadServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        SmartUpload smartUpload = new SmartUpload();
        ServletConfig config = this.getServletConfig();
//        初始化
        smartUpload.initialize(config, req, resp);
        try {
//            上傳檔案
            smartUpload.upload();
//            得到上傳檔案的物件
            File file = smartUpload.getFiles().getFile(0);
            file.saveAs("/Users/lucky/java/java_web_sample/UploadFile/uploadResult/" + file.getFileName(), SmartUpload.SAVE_PHYSICAL);
        } catch (SmartUploadException e) {
            e.printStackTrace();
        }
        String msg="Upload Success";
        req.setAttribute("msg",msg);
        RequestDispatcher requestDispatcher = req.getRequestDispatcher("/index.jsp");
        requestDispatcher.forward(req,resp);
    }
}

效果如圖所示
這裡寫圖片描述

這裡寫圖片描述