尝试将文件上传到文件夹时出错

时间:2017-06-13 07:29:31

标签: jquery ajax spring

我尝试将文件上传到文件夹中,文件路径的值从ajax调用成功传递给控制器​​类,但在这个类上我收到错误:

  

当前请求不是多部分请求

这是我的代码:

 @RequestMapping(value = "/event/uploadFile",headers=("content-type=multipart/*"), 
 method = RequestMethod.POST,consumes ={"application/x-www-form-urlencoded"})
    //String quote_upload=C:\fakepath\images.jpg    public @ResponseBody
    String uploadFileHandler(           @RequestParam String name,
            @RequestParam MultipartFile file) { 
            System.out.println("Creating the directory to store file");

            if (!file.isEmpty()) {          try {
            byte[] bytes = file.getBytes();

            // Creating the directory to store file
            String rootPath = "C://apache-tomcat-7.0.73//upload";
            File dir = new File(rootPath + File.separator + "tmpFiles");
            if (!dir.exists())
                dir.mkdirs();

            // Create the file on server
            File serverFile = new File(dir.getAbsolutePath()
                    + File.separator);
            BufferedOutputStream stream = new BufferedOutputStream(
                    new FileOutputStream(serverFile));
            stream.write(bytes);
            stream.close();

            System.out.println("************Server File Location="
                    + serverFile.getAbsolutePath());

            //return "You successfully uploaded file=" + name;          } catch (Exception e) {
            System.out.println("************failes");
            //return "You failed to upload " + name + " => " + e.getMessage();          }           //return "You failed to upload " + name
                //+ " because the file was empty.";         }       System.out.println("hello");        return "hello";     }

我的Ajax代码是:

$.ajax({ 
type : 'POST', url :"<c:url value='/event/uploadFile'/>",   
data:{name: $("#quote_name").val(), 
file:$("#quote_upload").val()}, 
//cache: false,
//contentType:text/plain, 
// processData: false, 
//dataType : "json", 
//Contenttype: 
})

这是我的控制器类代码,当我运行项目时出现此错误:

  

org.springframework.web.multipart.MultipartException:当前   请求不是多部分请求         at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.assertIsMultipartRequest(RequestParamMethodArgumentResolver.java:216)         在org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.resolveName(RequestParamMethodArgumentResolver.java:167)         at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:90)         在org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:99)         at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:161)         在org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:128)         在org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)         在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:817)         在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:731)         在org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)         在org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)         在org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)         在org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:968)         在org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:870)         在javax.servlet.http.HttpServlet.service(HttpServlet.java:650)         在org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:844)         在javax.servlet.http.HttpServlet.service(HttpServlet.java:731)         在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)         在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)         在org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)         在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)         在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)         在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:316)         在org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)         在org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)         在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)         在org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)         在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)         在org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:122)         在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)         在org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)         在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)         在org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169)         在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)         在org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:48)         在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)         在org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:133)         在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)         在org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:205)         在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)         在org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:120)         在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)         在org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)         在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)         在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)         在org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:91)         在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)         在org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:53)         在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)         在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)         在org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213)         在org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176)         在org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)         在org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)         在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)         在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)         在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)         在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)         在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)         在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)         在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)         在org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:958)         在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)         在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:452)         在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1087)         at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:637)         at org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:316)         在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)         at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)         at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)         在java.lang.Thread.run(Thread.java:745)

0 个答案:

没有答案