关于ssm框架上传图片未能解决的问题

参考文章:https://blog.csdn.net/chenchunlin526/article/details/70945877/

https://blog.csdn.net/qq_36671474/article/details/77773874

https://blog.csdn.net/qq_41669724/article/details/80748952

https://blog.csdn.net/dulonghao/article/details/78196999

1、加入两个jar包,commons-fileupload-1.3.jar、commons-io-1.2.jar

2、在配置文件applicationContext.xml加上以下配置

 
  1. <!-- 定义文件解释器(文件上传) -->

  2. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

  3. <!-- 设置默认编码 -->

  4. <property name="defaultEncoding" value="utf-8"></property>

  5. <!-- 上传图片最大大小1M-->

  6. <property name="maxUploadSize" value="1048576"></property>

  7. </bean>

3jsp部分代码:

var obj={};

var formdata1=new FormData($("#breifintro_from")[0]);//formdata1的表单里面有普通类型数据也有图片文件
      var formdata2=new FormData($("#days_setting1_from")[0]);
        

for(var i in formdata1){
         obj[formdata1[i].name]=formdata1[i].value;
      }
      for(var i in formdata2){
         obj[formdata2[i].name]=formdata2[i].value;
      }

//ajax实例
       $.ajax({
             type:"post",
             data:obj,
             url: "<%=basePath%>api/addaccount.action",
             processData: false,
             contentType: false,
             async: false,
             sucess: function (data) {
                alert(data);
             //alert(projectname);
             //alert(projectName);
             if (confirm('Are you sure to turn to sign in account?'))
             window.location.href ="<%=basePath%>api/connect.action";
             }
         });

4.controller层:

// 先实例化一个文件解析器
     CommonsMultipartResolver coMultiResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
            // 判断request请求中是否有文件上传
            if (coMultiResolver.isMultipart(request)) {
            // 转换Request
            MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
            // jsp页面的input标签可以有不同的name属性值
            Iterator<String> fileNames = multiRequest.getFileNames();
            while (fileNames.hasNext()) { //循环遍历
                MultipartFile file = multiRequest.getFile(fileNames.next()); //取出单个文件
                 if (!file.isEmpty()) { 
                     //设置图片上传路径(服务器)
                     String uploadPath = multiRequest.getSession().getServletContext().getRealPath("/upload");
                     //把图片路径存到数据库的路径名,先判断图片的name
                     if(file.getName().equals("projectImage")) {
                        String projectpath=getImage.getPath(uploadPath,file);
                        project.setProjectImage(projectpath);
                     }else if(file.getName().equals("processImage")) {
                         String processpath=getImage.getPath(uploadPath,file);
                         processintro.setProcessImage(processpath);
                     }
                 }
            }
            }
            //将其保存到session中
            request.getSession().setAttribute("projectImage", project.getProjectImage());
            request.getSession().setAttribute("processImage", processintro.getProcessImage());

但是!我的一直有问题,前台数据传不到后台,之前能传的普通数据也为空,没有找到原因,因为我这个页面有多个表单,所以我要使用表单序列化同时提交所有的表单数据,所以有些麻烦,不知道是不是序列化对于图片这样的数据不合适,希望各位前辈能够答疑

猜你喜欢

转载自blog.csdn.net/qq_37706228/article/details/82559958