文件上傳及文件大小限制_學習筆記


文件的上傳主要分成兩個步驟:

 1.用戶在頁面中選擇要上傳的文件,然后將請求提交到Servlet

 2.Servlet收到請求,解析用戶上傳的文件,然后將文件存儲到服務器

 

 以下內容需要注意

 

1. 表單的method屬性必須為post

 

2. 表單enctype屬性必須為multipart/form-data

 

3.上傳文件的控件是intput,type屬性為file

編寫Servelet

 

頁面的表單控件創建好以后,選中文件點擊上傳按鈕請求將會提交到指定的Servlet來處理

注意:這里不能再以前的Servlet中那樣,通過request.getParamter()獲取請求參數了,當enctype="multipart/form-data" 時,再使用getParamter()獲取到內容永遠為空因為瀏覽器發送請求的方式已經改變

 

既然以前的方法不能使用了,這里我們必須要引入一個新的工具來解析請求中的參數和文件,這個工具就是commons-fileupload。

下面是我寫的一個上傳圖片到\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\json\upload文件的servlet代碼

public class AServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        DiskFileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload fileUpload =new ServletFileUpload(factory);
        fileUpload.setFileSizeMax(1024*100);
        ServletContext servletContext= request.getServletContext();
        String realPath =servletContext.getRealPath("/upload");
        File file =new File(realPath);
        if(file.exists()){
            file.mkdir();
        }
        try {
            List<FileItem> fileList = fileUpload.parseRequest(request);
            for(FileItem item:fileList){
                if(item.isFormField()){
                    String name =item.getFieldName();
                    String value =item.getString("utf8");
                    System.out.println(name+value);
                }
                else {
                    long size =item.getSize();
                    String name = item.getName();
                    System.out.println(size);
                    try {
                        item.write(new File(realPath+"\\"+name));
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
        } catch (FileUploadException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

限制單個文件大小:

限制總文件的大小:

Jsp頁面代碼:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form action="${pageContext.request.contextPath}/AServlet" method="post" enctype="multipart/form-data" >
        用戶:<input type="text" name="username"/><br>
        <input type="file" name="photo"/><br>
        <input type="file" name="photo1"/><br>
        <input type="file" name="photo2"/><br>
        <input type="submit" value="提交" />
    </form>
</body>
</html>

需要注意的是:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM