Servlet3.0上传
前面的课程上传需要借助commons-fileupload包,经过创建解析工厂,创建解析器,解析等步骤进行上传
servlet3.0的上传在该工具包的基础上进一步封装,使得上传步骤更加简化,更重要的一点是可以使用
String getParameter(String name)
如何使用:
- 在解析上传数据的servlet上添加**@MultipartConfig**注释
- 通过form表单中的指定的name来获取Part
- 利用Part进行操作
例子: --处理上传数据的servlet
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
@WebServlet(urlPatterns="/UploadServlet")
@MultipartConfig //需要上传须使用该注释
public class UploadServlet extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
System.out.println(req.getParameter("username"));
//获取part
Part part = req.getPart("photo");
//获取mime类型
System.out.println(part.getContentType());
//获取文件字节数
System.out.println(part.getSize());
//获取part的名称
System.out.println(part.getName());
//获取指定请求头的内容,通常这一步是用来获取文件名
String cd = part.getHeader("Content-Disposition");
String allfilename = cd.substring(cd.lastIndexOf(";") + 1);
String filename = allfilename.substring(allfilename.indexOf("\"") + 1, allfilename.lastIndexOf("\""));
System.out.println(filename);
//讲上传的文件写入到磁盘
part.write("e:/" + filename);
}
}
表单:
<form action="<c:url value="UploadServlet"/>" method="post" enctype="multipart/form-data">
用户名:<input type="text" name="username"/><br>
照 片:<input type="file" name="photo"/><br>
<input type="submit" value="提交"/>
</form>