BestZhao 2017-08-02 05:44 采纳率: 0%
浏览 1165
已结题

springmvc使用servlet3.0上传文件错误

文件结构,设定的file在WebContent下

WebAppInitializer配置如下

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{

    @Override
    protected Class<?>[] getRootConfigClasses() {
        // TODO Auto-generated method stub
        return new Class<?>[]{RootConfig.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        // TODO Auto-generated method stub
        return new Class<?>[]{WebConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        // TODO Auto-generated method stub
        return new String[]{"/"};
    }
//  @Override
//   protected void customizeRegistration(Dynamic registration) {
//      registration.setMultipartConfig(
//          new MultipartConfigElement("/file", 2097152, 4194304, 0));
//    }
    @Override  
    protected void customizeRegistration(ServletRegistration.Dynamic registration) {  
        registration.setMultipartConfig(getMultipartConfigElement());  
    }  

    private MultipartConfigElement getMultipartConfigElement() {  
        MultipartConfigElement multipartConfigElement = new MultipartConfigElement( LOCATION, MAX_FILE_SIZE, MAX_REQUEST_SIZE, FILE_SIZE_THRESHOLD);  
        return multipartConfigElement;  
    }  

    private static final String LOCATION = "/file/"; // Temporary location where files will be stored  

    private static final long MAX_FILE_SIZE = 5242880; // 5MB : Max file size.  
                                                        // Beyond that size spring will throw exception.  
    private static final long MAX_REQUEST_SIZE = 20971520; // 20MB : Total request size containing Multi part.  

    private static final int FILE_SIZE_THRESHOLD = 0;
}

WebConfig.class配置如下


    @Bean(name = "multipartResolver")  
    public StandardServletMultipartResolver resolver() {  
        return new StandardServletMultipartResolver();  
    }  

public class User {
private MultipartFile multipartFile;
get set
}

controller配置如下

@Controller
public class WebControllerr {
    @Autowired
    UserService userService;
    @Autowired
    HttpServletRequest httpServletRequest;

    @RequestMapping(value="/photo")
    public String update(Model model){
        model.addAttribute("user", new User());
        return "photo";
    }

    @RequestMapping("/filedown")
    public void fileDownLoad(HttpServletRequest servletRequest,
            @ModelAttribute User user,Model model){
        MultipartFile multipartFile=user.getMultipartFile();
        String filename=multipartFile.getOriginalFilename();
        try {
            File file=new File(servletRequest.getServletContext().getRealPath("/file"),filename);
            multipartFile.transferTo(file);
        } catch (Exception e) {
            e.printStackTrace();
        }

Could not complete request
org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [C:\Tomcat7\work\Catalina\localhost\WebProtect3\file] is not valid
at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:99)
at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.(StandardMultipartHttpServletRequest.java:77)
at org.springframework.web.multipart.support.StandardServletMultipartResolver.resolveMultipart(StandardServletMultipartResolver.java:75)
at org.springframework.web.servlet.DispatcherServlet.checkMultipart(DispatcherServlet.java:1041)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:887)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:851)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:855)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.logging.log4j.core.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:66)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:122)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.__invoke(StandardHostValve.java:170)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

  • 写回答

5条回答 默认 最新

  • qq_641843909 2017-08-02 06:25
    关注

    是不是在页面form 里少个属性 enctype="multipart/form-data"
    图片说明

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料