西安衛星測控中心調配多顆衛星,支援河南地區抗洪搶險
阿新 • • 發佈:2021-07-22
單檔案上傳
<!--記得要使用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裡面勾選上如下所示覆選框,否則使用虛擬路徑無法生效