Servlet3.0的@MultipartConfig不起作用怎么办?

肥老 2015-11-18 07:48:17
某个接受上传文件的Servlet准备把文件存放在c:\apache-tomcat\webapps\data\文件夹,所以在webapps下新建这个data文件夹。
然后在Servlet代码中加入@WebServlet和@MultipartConfig注解:
@WebServlet("/UploadServlet")
@MultipartConfig(location = "c:\\apache-tomcat\\webapps\\data\\")
public class UploadServlet extends HttpServlet {……}

结果:点表单的提交按钮后Eclipse的Console面板显示java.io.FileNotFoundException: null\无标题.gif (系统找不到指定的路径。)

说明@MultipartConfig没有生效,怎么办?

如果我按旧版本的方法新建web.xml,里面加入<context-param>……可以上传。但我想用@MultipartConfig这种。Servlet的版本没问题。
...全文
509 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
肥老 2015-11-19
  • 打赏
  • 举报
回复
问题解决了。@MultipartConfig注解只对Servlet3.0的javax.servlet.http.Part这种更简单的文件上传功能有效,对第三方的组件无效。我原来用的org.apache.commons.fileupload 只能用web.xml文件。
package com.org.servlet3; 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; /** * @project servlet3.0 * servlet3.0的文件上传 * @date:2012-5-21 *在创建项目的时候首先添加Tomcat7.x的支持,然后把apache-tomcat-7.0.27\conf\web.xml拷贝到项目WEB-INF目录下 *把之前的web.xml覆盖.. 配置留下 <?xml version="1.0" encoding="ISO-8859-1"?> index.html index.htm index.jsp */ @SuppressWarnings("all") @WebServlet(name="fileUploadServlet",urlPatterns="/fileUploadServlet") @MultipartConfig(maxRequestSize=222222)//设置文件上传大小 public class FileUploadServlet extends HttpServlet { /** *访问 *http://localhost:8080/servlet3.0/ */ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); Part part=req.getPart("file"); //获取页面的name //System.out.println(part.getName()); System.out.println(System.getProperty("user.dir"));//输出当前的项目存放的路径 String uploadPath=req.getSession().getServletContext().getRealPath("/upload"); System.out.println(uploadPath);//输出上传的文件路径 String value=part.getHeader("content-disposition");//设置头信息 System.out.println(value); String sub=value.substring(value.lastIndexOf("=")+2,value.length()-1);//截取文件 System.out.println("file size: \t"+part.getSize());//文件的大小 part.write(uploadPath+sub);//写入文件 } }

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧