学习目标:
常见的文件上传的几种方法:PartServlet/ServletFileUpload/MultipartFile/拖拽上传文件/剪切上传文件学习产出:
页面展示在最后面:
第一种:PartServlet
@MultipartConfig /*当在servlet上指定时,指示servlet期望的请求是MIME类型multipart*/
public class UploadPartServlet extends HttpServlet {
/**
* 上传图片存放位置
*/
private final String UPLOAD_DIR = "/upload";
/**
* 上传文件头信息中关于文件名称的标志位
*/
private final String HEAD_SIGN = "filename=\"";
@Override
public void init() {
//初始化上传文件保存文件夹
File file = new File(this.getServletContext().getRealPath("/") + UPLOAD_DIR);
if (!file.exists()) {
file.mkdir();
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//记录处理时间
long start = System.currentTimeMillis();
//处理二进制流格式
req.setCharacterEncoding("UTF-8");
//获取表单元素
Part partFile1 = req.getPart("partFile1");
//获取文件名称, +10的原因是 HEAD_SIGN 的长度是 10;
String header = partFile1.getHeader("content-disposition");
String fileName = header.substring(header.indexOf(HEAD_SIGN) + 10, header.lastIndexOf("\""));
//输出数据
partFile1.write(req.getSession().getServletContext().getRealPath(UPLOAD_DIR) + "/" + fileName);
//上传结束
long end = System.currentTimeMillis();
String outString = "<script type='text/javascript'>" + "window.parent.showTime(" + "\"#span1\", " + (end - start) + ")" + "</script>";
PrintWriter writer = resp.getWriter();
writer.write(outString);
}
}
第二种:ServletFileUpload
/**
* 功能描述: 使用fileUpload组件上传文件
* <dependency>
* <groupId>commons-fileupload</groupId>
* <artifactId>commons-fileupload</artifactId>
* <version>1.3.1</version>
* </dependency>
* <dependency>
* <groupId>commons-io</groupId>
* <artifactId>commons-io</artifactId>
* <version>2.4</version>
* </dependency>
*
*/
public class FileUploadServlet extends HttpServlet {
/*上传文件路径*/
private File uploadFilePath;
/*零时缓存文件路径*/
private File tempFilePath;
@Override
public void init() {
uploadFilePath = new File(this.getServletContext().getRealPath("/upload"));
tempFilePath = new File(this.getServletContext().getRealPath("/temp"))