<form action="UpdloadServlet" method="post" enctype="multipart/form-data">
请选择图片:<input name="myfile" type="file" />
<input type="submit" value="提交" />${result}
</form>
是 SmartUpload 要导入其 jar 包,你的 form 的 action 应该是 action="smartUploadServlet.do",而不是原来的 action="uploadServlet.do",注意 web.xml 的配置:
<servlet>
<servlet-name>SmartUploadServlet</servlet-name>
<servlet-class>com.imooc.servlet.SmartUploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SmartUploadServlet</servlet-name>
<url-pattern>/smartUploadServlet.do</url-pattern>
</servlet-mapping>
最后,SmartUploadServlet 类的 doPost方法应该是这样:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置上传文件保存路径
String filePath = getServletContext().getRealPath("/")+"images/";
File file = new File(filePath);
if(!file.exists()){
file.mkdir();
}
SmartUpload su = new SmartUpload();
//初始化对象
su.initialize(getServletConfig(), request, response);
//设置上传文件大小
su.setMaxFileSize(1024*1024*10);
//设置所有文件的大小
su.setTotalMaxFileSize(1024*1024*100);
//设置允许上传文件类型
su.setAllowedFilesList("txt,jpg,gif");
String result="上传成功!";
//设置禁止上传的文件类型
try{
su.setDeniedFilesList("rap,jsp,js");
//上传文件
su.upload();
int count = su.save(filePath);
System.out.println("上传成功" + count + "个文件!");
}catch (Exception e) {
result = "上传失败!";
if(e.getMessage().indexOf("1015") != -1){
result = "上传失败:上传文件类型不正确!";
}else if(e.getMessage().indexOf("1010") != -1){
result = "上传失败:上传文件类型不正确!";
}else if(e.getMessage().indexOf("1105") != -1){
result ="上传失败:上传文件大小大于允许上传的最大值!";
}else if(e.getMessage().indexOf("1110") != -1){
result ="上传失败:上传文件总大小大于允许上传总大小的最大值!";
}
e.printStackTrace();
}
for(int i=0;i < su.getFiles().getCount();i++){
com.jspsmart.upload.File tempFile = su.getFiles().getFile(i);
System.out.println("--------------------");
System.out.println("表单当中 name 的值:"+tempFile.getFieldName());
System.out.println("上传文件名:"+tempFile.getFileName());
System.out.println("上传文件的大小:"+tempFile.getSize());
System.out.println("上传文件的拓展名:"+tempFile.getFileExt());
System.out.println("上传文件全名:"+tempFile.getFilePathName());
System.out.println("--------------------");
}
request.setAttribute("result", result);
request.getRequestDispatcher("jsp/02.jsp").forward(request, response);
}
这样就绝对不会错了!