〇、前情提要
上传文件使用了enctype="multipart/form-data"的,但servlet里面用request.getParameter()方法无论如何都只能获得null值。
enctype="multipart/form-data"类型的表单提交的值是不可以直接用JSP的内置对象request对象取值的,因为这是二进制数据,必须使用上传组件附带的Request类,比如(SmartUpload里面的Request类),所以要保存上传文件的其它信息,就要取得上传组件的Request类对象就可以了…取值方法还是:request.getParameter(“name”);
参考:
网上随便找的UploadHandleServlet,忘了网址是什么,下面有附。
一、分析
一个form表单传空文件
写一个普通的UploadHandleServlet
public class UploadHandleServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全
String savePath = this.getServletContext().getRealPath("/WEB-INF/upload");
File file = new File(savePath);
//判断上传文件的保存目录是否存在
if (!file.exists() && !file.isDirectory()) {
System.out.println(savePath+"目录不存在,需要创建");
//创建目录
file.mkdir();
}
//消息提示
String message = "";
try{
//使用Apache文件上传组件处理文件上传步骤:
//1、创建一个DiskFileItemFactory工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
//2、创建一个文件上传解析器
ServletFileUpload upload = new ServletFileUpload(factory);