單文件上傳
首頁頁面端(upload.html)
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="myfile"/>
<button>上傳</button>
</form>
服務端處理(UploadServlet.java)
@WebServlet("/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//設置請求編碼
request.setCharacterEncoding("utf-8");
//獲取服務端用於存儲文件的目錄
String baseDir = request.getServletContext().getRealPath("myfile");
//獲取一個文件單元
Part part = request.getPart("myfile");
String type = part.getContentType();
long size = part.getSize();
String fname = part.getSubmittedFileName();
System.out.println("文件名稱:" + fname);
System.out.println("文件類型:" + type);
System.out.println("文件大小:" + size);
//存儲到服務器
part.write(baseDir + File.separator + fname);
}
}
**
多文件上傳
前端頁面端設置
<form action="upload" method="post" enctype="multipart/form-data">
<input type="text" name="fname" placeholder="請輸入文件名" /> <br />
<input type="file" name="myfile" multiple/>
<button>上傳</button>
</form>
服務端處理
@WebServlet("/upload2")
@MultipartConfig(
fileSizeThreshold=1024*1024, //設置內存緩存的最大空間(當上傳文件的字節數達到該值後使用臨時文件緩存)
location="d:/temp", //設置臨時文件的存儲目錄
maxFileSize=1024*1024*200, //設置允許上傳的單個文件的最大限制
maxRequestSize=1024*1024*500 //設置表單允許提交的總字節數
)
public class UploadServlet2 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String base = request.getServletContext().getRealPath("myfile");
//獲取所有上傳的附件信息
Collection<Part> parts = request.getParts();
parts.forEach(part->{
String fname = part.getSubmittedFileName();
String type = part.getContentType();
long size = part.getSize();
System.out.println("文件名:"+fname);
System.out.println("文件類型:"+type);
System.out.println("文件大小:"+size);
try {
part.write(base+File.separator+fname);
} catch (Exception e) {
e.printStackTrace();
}
});
}
}
**