求助:summernote+spring mvc图片上传报错

问题描述

求助:summernote+spring mvc图片上传报错

先是controller代码:

 @ResponseBody
    @RequestMapping("/sumimg.do")
    public Result upload(HttpServletRequest request) {
        Result result = new Result();
        // 转换为文件类型的request
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        // 获取对应file对象
        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
        Iterator<String> fileIterator = multipartRequest.getFileNames();
        // 获取项目的相对路径(http://localhost:8080/file)
        String path = request.getSession().getServletContext().getRealPath("up-img");
        while (fileIterator.hasNext()) {
            String fileKey = fileIterator.next();
            // 获取对应文件
            MultipartFile multipartFile = fileMap.get(fileKey);
            if (multipartFile.getSize() != 0L) {
                String imgName = Util.createId() + multipartFile.getOriginalFilename();
                try {
                    multipartFile.transferTo(new File(path,imgName));
                } catch (IllegalStateException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                result.setData(path+"File.separator"+imgName);
                result.setMsg("上传成功!");
                result.setStatus(0);
                System.out.println(path+"\"+imgName);
            } else {
                result.setMsg("上传失败!");
                result.setStatus(1);
            }
        }
        return result;
    }

然后是spring mvc的配置:

 <!-- 使用CommonsMultipartResolver配置一个MultipartResolver解析器 -->
    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--文件最大值 -->
        <property name="maxUploadSize" value="1048576000" />
        <property name="defaultEncoding" value="utf-8"/>
        <!--缓存大小 -->
        <property name="maxInMemorySize" value="40960"/>
    </bean>

然后是前端的代码:

 <script type="text/javascript">
            $(function(){
                $(".summernote").summernote({
                    lang:"zh-CN",height:"700px",
                     callbacks: {
                        onImageUpload: function(files) {
                            sendFile(files[0]);
                        }
                    }
                });
                function sendFile(file) {
                    var data = new FormData();
                    data = new FormData();
                    data.append("file", file);
                    $.ajax({
                        data: data,
                        type: "POST",
                        url: path+"/upload/sumimg.do",
                        cache: false,
                        contentType: false,
                        processData: false,
                        success: function(result) {
                    alert(1);
                            alert(result.data);
                        },
                        error: function() {
                            $(".note-alarm").html("上传失败");
                            setTimeout(function() {
                                $(".note-alarm").remove();
                            },3000);
                        }
                    });
                }
            });
        </script>
    </head>
    <body>
        <div class="container summernote" id="summernote"></div>
    </body>

最后是所报的错误:

 严重: Servlet.service() for servlet springmvc threw exception
java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest
    at cn.xaut.bz.controller.ImageController.upload(ImageController.java:38)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:844)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:745)

注:图片可以正常的保存到img-upload中,路径也可以正常打印

解决方案

我已经解决了,端口号错误

解决方案二:

  MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; 强制转换出错

解决方案三:

  MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; 强制转换出错

解决方案四:

  MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; 强制转换出错

解决方案五:

没人会吗?这么惨啊。

时间: 2024-08-18 07:30:55

求助:summernote+spring mvc图片上传报错的相关文章

php图片上传报错error=3

问题描述 php图片上传报错error=3 upload: <?php/** Created by PhpStorm. User: rosen Date: 15-11-5 Time: 下午8:43*/print_r($_FILES['file']); ?> 为什么程序运行结果报错Array ( [name] => 2015-10-19 18:47:42屏幕截图.png [type] => [tmp_name] => [error] => 3 [size] => 0

android-Android 图片上传报错

问题描述 Android 图片上传报错 解决方案 看一下AsyncHttpRequestjava文件的147行,178行,109行有没有错,调试跟踪下: 解决方案二: 你首先看一下是不是你Android端的问题,还是服务端的问题. 解决方案三: 参考: http://bbs.anzhuo.cn/thread-941870-1-1.html

ajax-Bootstrap插件File Input图片上传报错?怎么解决

问题描述 Bootstrap插件File Input图片上传报错?怎么解决

spring mvc-Spring mvc 图片上传,求代码

问题描述 Spring mvc 图片上传,求代码 Spring mvc 图片上传,public void savePhoto(InputStream inputStream) throws Exception 里面怎么写 解决方案 Spring Mvc 上传图片代码spring MVC 上传图片 DEMOspring mvc 上传图片---------------------- 解决方案二: @RequestMapping("saveAdvertFile.action") public

Spring MVC 如何上传多个文件到指定位置

Spring MVC 如何上传多个文件到指定位置 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. Spring MVC Tutorial: How to Upload Multiple File

fileupload上传报错Could not find file

问题描述 fileupload上传报错Couldnotfindfile研究了一天啦!都找不到解決辦法在本地時就可以上傳,但是放到服務器上面就報上面的錯了!//stringserverpath=Server.MapPath("~/Upload/")+fileName;//设置附件上传到的服务器路径//stringserverpath=HttpContext.Current.Request.MapPath("~/Upload/")+fileName;又了好幾種設置路徑的

PHP上传报错:failed to open stream: Permission denied

问题描述 PHP上传报错:failed to open stream: Permission denied 代码一: doAction.php代码: 选择图片,上传报错: 解决方案 PHP failed to open stream: Permission denied关于php使用fopen报错 failed to open stream: Permission deniedfailed to open stream: Permission denied in 解决方案二: 权限不足,上传文件

微信永久视频上传报错41005 媒体文件丢失

问题描述 微信永久视频上传报错41005 媒体文件丢失 @using (Html.BeginForm(""UploadVideo""AddForeverVideo"" FormMethod.Post new { enctype = ""multipart/form-data"" })) { 选择上传媒体文件: }上面是一个input type为file ,name="description&quo

文件传输-java使用SSH方式上传报错:Algorithm negotiation fail

问题描述 java使用SSH方式上传报错:Algorithm negotiation fail java用jsch实现文件传输(SSH形式),但是好像本地和服务器加密方式不一致,一直报错: com.jcraft.jsch.JSchException: Algorithm negotiation fail 解决方案 如果是已form表单中的上传.需要改form的属性enctype( 属性规定在发送到服务器之前应该如何对表单数据进行编码.) 改属性默认值:application/x-www-form