1. 程式人生 > 其它 >爬蟲寫得好,監獄進的早?我看太刑了,日子越來越有判頭了

爬蟲寫得好,監獄進的早?我看太刑了,日子越來越有判頭了

單檔案上傳

<!--記得要使用post方法,和指定格式-->
<form action="/LayUI/up" method="post" enctype="multipart/form-data">
    <input type="file" name="file"><br>
    <input type="submit" value="上傳">
</form>

在servlet中通過name獲取檔案路徑,MultipartConfig註釋在使用Part類時要存在,不然會報錯

@WebServlet(name = "UpServlet",urlPatterns = "/up")
@MultipartConfig(location = "F:/work/img",fileSizeThreshold = 1024*102,maxFileSize = 1024*1024*5,maxRequestSize = 1024*1024*5*5)
public class UpServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Part part = request.getPart("file");
        //獲取檔名
        System.out.println(part.getSubmittedFileName());
        //隨機生成檔名,可以防止上傳檔案重複
        String filename = UUID.randomUUID().toString()+".jpg";
        //檔案複製,放在location目錄下
        part.write(filename);
    }

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

多檔案上傳

<form action="/LayUI/ups" method="post" enctype="multipart/form-data">
    <input name="file" type="file"><br>
    <input name="file" type="file"><br>
    <input name="file" type="file"><br>
    <input name="file" type="file"><br>
    <input type="submit" value="上傳">
</form>

這裡只是簡單的模擬,一般是通過foreach迴圈判斷你選擇了多少個檔案

@WebServlet(name = "UPsServlet",urlPatterns = "/ups")
@MultipartConfig(location = "F:/work/img",fileSizeThreshold = 1024*102,maxFileSize = 1024*1024*5,maxRequestSize = 1024*1024*5*5)
public class UPsServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Collection<Part> parts = request.getParts();
        List<String> up_list=new ArrayList<>();
        String path="F:/work/img";
        for (Part part : parts) {
            String filename = UUID.randomUUID().toString()+".jpg";
            if(!part.getSubmittedFileName().equals("")){//如果沒有選擇圖片不儲存與展示
                part.write(path+ File.separator +filename);
                //用於檔案展示,upload是虛擬路徑,因為你轉發的是jsp頁面,直接使用真實路徑是無法顯示圖片的
                up_list.add("/upload/"+filename);
            }
        }
        request.setAttribute("up_list",up_list);
        request.getRequestDispatcher("show.jsp").forward(request,response);
    }

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

設定虛擬路徑

1、找到tomcat目錄下conf--》 server.xml檔案中,找到Host標籤,在裡面寫上

<Context path="/upload" docBase="f:/work/img"/>
<!--path是虛擬路徑名稱,docBase是真實路徑名-->

2、如果是使用idea,需要在配置tomcat裡面勾選上如下所示覆選框,否則使用虛擬路徑無法生效