基本概念
Apache Commons FileUpload :Apache Commons FileUpload组件提供了一种简单而灵活的方法,可以将对多部分文件上传功能的支持添加到Servlet和Web应用程序。
Maven
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
源代码
package club.zstuca.demo;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
* Servlet implementation class UploadDEMO
*/
@WebServlet("/UploadDEMO")
public class UploadDEMO extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public UploadDEMO() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=UTF-8");
boolean bool=ServletFileUpload.isMultipartContent(request);
System.out.println(bool);
if(bool) {
ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());
// upload.setFileSizeMax(20);
try {
List<FileItem> items = upload.parseRequest(request);
Iterator<FileItem> it = items.iterator();
while(it.hasNext()) {
FileItem item = it.next();
String name = item.getFieldName();
if(item.isFormField()) {
if( name.equals("name")){
}else if(name.equals("psd")) {
}else{
}
}else {
System.out.println(item.getName());
String filename = item.getName();
String ext = filename.substring(filename.indexOf(".")+1);
System.out.println(ext);
if(!(ext.equals("png")||ext.equals("gif")||ext.equals("jpg"))){
System.out.println("upload file error");
return;
}
String path = request.getSession().getServletContext().getRealPath("upload");
File file = new File("C:\\Users\\Lenovo\\Desktop",filename);
System.out.println(file.getTotalSpace());
item.write(file);
}
}
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
System.out.print("OK");
}
}
教学资源
https://www.bilibili.com/video/av29086718?p=34
参考文章
暂无