最近开始学习SpringMVC框架,在学习数据绑定的时候,发现可以使用@RequestParam注解绑定请求数据,实现了文件上传。但是如果一个项目是前后端分离的,前端系统向后端服务上传文件该怎么解决了?

  首先考虑前端用哪一种方式进行文件上传,我选择了使用ajax的方式进行上传.

  前端页面代码如下:

  

1 <div id="login-window">
2    <input type="file" id="file_upload"/>
3    <input type="button" value="上传图片" id="upload"/>
4 </div>

  前端js代码如下:

  

 1 $("#upload").click(function(){
 2        var formData = new FormData();
 3       formData.append('file',$("#file_upload")[0].files[0]);
 4       $.ajax({
 5         type:"post",
 6         url:"http://127.0.0.1:8080/SpringMVC/Ajax/jsupload",
 7         async:false,
 8         contentType: false, //这个一定要写,发送信息至服务器时内容编码类型
 9         processData: false, //这个也一定要写,默认值: true。默认情况下,通过data选项传递进来的数据,
10                    //如果是一个对象(技术上讲只要不是字符串),都会处理转化成一个查询字符串,
11                  // 以配合默认内容类型 "application/x-www-form-urlencoded"。
12 //如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。
13         data:formData,
14         dataType:'text', //返回类型,有json,text,HTML。这里并没有jsonp格式,所以别妄想能用jsonp做跨域了。
15         success:function(data){
16            console.log("上传完成")
17         },
18         error:function(XMLHttpRequest, textStatus, errorThrown, data){
19           alert(errorThrown);
20         }
21        });
22       });

  后端代码如下:

  后端代码写之前需要在Springmvc的配置文件中配置文件上传信息

  

 1 <!-- 配置文件上传参数 -->
 2       <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
 3         <!--此处是配置限制文件上传大小,可以不用配置,采用默认值-->
 4         <property name="maxUploadSize">
 5           <value>1048576</value>
 6         </property>
 7   <!--此处是配置文件上传的字符集类型,防止乱码-->
 8         <property name="defaultEncoding">
 9           <value>UTF-8</value>
10         </property>
11       </bean>

  配置完可以在SpringMVC的Controller类里面写上传的方法:

 1 @RequestMapping(value="/jsupload",method={RequestMethod.POST})
 2 public void paramBind(HttpServletRequest request,HttpServletResponse response,@RequestParam("file")CommonsMultipartFile formFile){
 3       MultipartFile formFile1 = ((MultipartHttpServletRequest)request).getFile("file");
 4       String path="E:/"+new Date().getTime()+formFile.getOriginalFilename();
 5           File newFile=new File(path);
 6       try {
 7         formFile.transferTo(newFile);
 8       } catch (IllegalStateException e) {
 9         e.printStackTrace();
10       } catch (IOException e) {
11         e.printStackTrace();
12       }
13         response.setHeader("Access-Control-Allow-Origin", "*");
14     }

  方法参数中的@RequestParam("file")CommonsMultipartFile formFile是采用注解的方式实现数据绑定。

  在方法的最后response.setHeader("Access-Control-Allow-Origin", "*");这一行代码是实现ajax跨域传输的关键,如果是跨域传输,但是没有在响应头信息中设置Access-Control-Allow-Origin的值为 "*", 则会在前端控制台上提示:No 'Access-Control-Allow-Origin' header is present on the requested resource,但是此时文件已经上传到了后端服务器。如果前后端在同一个工程下则不会出现这个问题。

  以上代码可以完成简单的前后端跨域传输。(学习笔记,如有错误感谢指正,不喜勿喷)

转载于:https://www.cnblogs.com/zhangyyaf/p/9279211.html

SpringMvc+ajax实现文件跨域上传相关推荐

  1. 全网最直接简单。百度富文本跨域上传文件到文件服务器

    看了很多文章其实也有很多办法,实现跨域上传.现在讲我目前所用的方法.只实现的多图上传.单图上传失败. 接下来必须认真的看完文章. 当前我用的 版本为UEditor1.4.3. 这里主要是实现重写接收文 ...

  2. php js跨域上传文件,Jquery实现跨域异步上传文件步骤详解

    这次给大家带来Jquery实现跨域异步上传文件步骤详解,Jquery实现跨域异步上传文件的注意事项有哪些,下面就是实战案例,一起来看一下. 先说明白 这个跨域异步上传功能我们借助了Jquery.for ...

  3. java 跨域上传_java使用webuploader实现跨域上传详解

    前言 项目中使用webuploader进行文件上传,需要用到跨域,查看webuploader的issues发现是支持上传的,但是他们写的回复都是不清不白的,有点迷糊:想了半天才知道咋回事,也可能是我比 ...

  4. wangeditor 请求头_跨域上传 · wangEditor2使用手册 · 看云

    **首先,wangEditor的跨域上传已经不再支持 IE8.9 浏览器.** ---- IE10 及以上浏览器在使用跨域上传时,需要服务器端的配合,对`response`设置以下`head`信息: ...

  5. springboot上传图片到宝塔Linux(本地上传和跨域上传)

     1.浏览器访问宝塔面板的图片需要的配置-- 点击文件www-->server-->tomcat-->conf-->server.xml 可以自己修改,请在宝塔面板和服务器上放 ...

  6. 解决使用elementUI框架el-upload跨域上传时session丢失问题

    解决使用elementUI框架el-upload跨域上传时session丢失问题 参考文章: (1)解决使用elementUI框架el-upload跨域上传时session丢失问题 (2)https: ...

  7. java 跨域上传,Java如何利用Ajax完成跨域上传图片的功能介绍

    这篇文章主要介绍了Java使用Ajax实现跨域上传图片功能,需要的朋友可以参考下 说明 : 图片服务器是用Nginx搭建的,用的是PHP语言 这个功能 需要 用到两个js文件: jquery.js和j ...

  8. SWFUpload上传文件组件,跨域上传文件

    转自: http://zhaowenbinmail.blog.163.com/blog/static/3908086201042743942935/ 解决SWFUpload上传文件组件使用时报告204 ...

  9. java 跨域上传_java后台图片跨域上传图片 文件

    发送方 @ResponseBody @RequestMapping(value="/imgUpLoadNewOneKuaYu")public String imgUpLoadNew ...

最新文章

  1. Tomcat架构(二)
  2. COM:中科院遗传发育所发表“重组菌群体系在根系微生物组研究中应用”的重要综述
  3. 开关电源过流保护-打嗝模式
  4. 菜鸟经验积累之JS运算
  5. Mongodb的安装部署
  6. Py之urllib2:Python库之urllib、urllib2、urllib3系列简介、安装、使用方法之详细攻略
  7. SpringCloud版本定义说明
  8. 数据结构与算法之KMP算法
  9. kibana 查询_干货 | Elasticsearch、Kibana数据导出实战
  10. nvidia TX2 CUDA yolov5环境搭建
  11. micropython入门教程-【ESP8266】MicroPython的快速入门教程
  12. a+ open python_python编程之文件操作
  13. Java学习笔记:根据Excel工资表生成工资条
  14. Linux使用ragel进行文本快速解析(上)
  15. 苹果电脑计算机找不到打印机,在苹果电脑上连接打印机可以这样操作
  16. LogMeIn Pro 试用简介!
  17. CTF-BeesCMS系统漏洞分析溯源
  18. 背单词软件速度对比测试,手机背单词大比拼,谁才是速度之王
  19. 普通人的爱国在日常生活中如何提现
  20. 表格里面如何根据身份证号提取出生日期

热门文章

  1. 人的原罪、本我和超我
  2. log4j日志记录级别是如何工作?
  3. .net内存管理与指针
  4. 关于端口映射的一个命令
  5. RPA实施过程中可能会遇到的14个坑
  6. SQLServer之删除约束
  7. Android定制:修改开机启动画面
  8. Java接口对Hadoop集群的操作
  9. UC阿里鱼卡全网免流活动正在进行
  10. Android学习笔记之Android Studio添加新的Activity