博客已迁移到CSDN《https://blog.csdn.net/qq_33375499》

单文件上传 
<!-- 创建文件选择框 -->
文件上传 :<input type="file" id="file" name="filename" />

AJAX获取数据并进行上传:

// 创建formData对象,用于保存ajax上传的参数信息
var formData = new FormData();
// 获取要上传的文件file
var files = document.getElementById("file").files;
if(files.length <= 0){
alert("请选择文件");
return;
}
var file = files[0];
// 将文件添加到formData对象中
formData.append("file",file);
// ajax 异步上传
$.ajax({
  type:"post",
  url:"upload.do",// 上传请求url
  data:formData,// 上传参数
  processData : false,// 必须,设置不转换为string,默认为true
  contentType : false,
  success:function(data){
    alert("上传成功");
  },
  error:function(e){
    alert("上传失败");
  }
});

后台数据接收action(controller)代码

第一种:使用Springmvc自带注解接收文件

@RequestMapping("upload.do")

public void upload(@RequestParam(value="file")MultipartFile file) throws Exception {// 使用RequestParam注解接收参数,value值为formData中文件对应的key值
  // 文件名称
  file.getOriginalFilename();
  // 文件字节数组
  file.getBytes();   ... }

第二种:用HttpServletRequest接收文件

@RequestMapping("upload.do")

public void upload() throws Exception {
  MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;// request转换
  MultipartFile file = multipartHttpServletRequest.getFile("file"); // 参数为fromData中文件的key值
  // 文件名称
  file.getOriginalFilename();   // 文件字节数组
  file.getBytes();   ... }

  

多文件上传

<!-- 创建文件选择框 -->
文件上传1 :<input type="file" id="file1" name="filename" />
文件上传2 :<input type="file" id="file2" name="filename" />
文件上传3 :<input type="file" id="file3" name="filename" />

AJAX获取数据并进行上传:

// 创建formData对象,用于保存ajax上传的参数信息
var formData = new FormData();
// 获取要上传的文件file
var files = document.getElementsByName("filename");
for (var i = 0, len = files.length; i < len; i++){
  var fs = files[i].files;
  if(fs.length <= 0){
    alert("请先上传文件");
    return;
  }
  // 将文件添加到formData对象中
  formData.append("files",fs[0]);
}
// ajax 异步上传
$.ajax({
  type:"post",
  url:"upload.do",// 上传请求url
  data:formData,// 上传参数
  processData : false,// 必须,设置不转换为string,默认为true
  contentType : false,
  success:function(data){
    alert("上传成功");
  },
  error:function(e){
    alert("上传失败");
  }
});

  

后台数据接收action(controller)代码

第一种:使用Springmvc自带注解接收文件

@RequestMapping("upload.do")
public void upload(@RequestParam(value="files")MultipartFile[] files) throws Exception {// 使用RequestParam注解接收参数,value值为formData中文件对应的key值
  for(int i = 0,len = files.length; i < len; i++){
    // 文件名称
    files[i].getOriginalFilename();
    // 文件字节数组
    files[i].getBytes();
  }
  ...
}

第二种:用HttpServletRequest接收文件

@RequestMapping("upload.do")
public void upload() throws Exception {
  MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;// request转换
  MultipartFile[] files = multipartHttpServletRequest.getFiles("files"); // 参数为fromData中文件的key值
  for(int i = 0,len = files.length; i < len; i++){
    // 文件名称
    files[i].getOriginalFilename();
    // 文件字节数组
    files[i].getBytes();
  }
  ... 
}

  

Spring使用ajax异步上传文件的更多相关文章

  1. ajax异步上传文件和表单同步上传文件 的区别

    1. 用表单上传文件(以照片为例)-同步上传 html部分代码:这里请求地址index.php <!DOCTYPE html> <html lang="en"&g ...

  2. 基于Flask开发网站 -- 前端Ajax异步上传文件到后台

    大家好,我是辰哥~ 辰哥最近利用空闲时间在写一个在线可视化平台,过程中也觉得一些技术还是比较有意思的,所以就以模块化的形式分享出来.如:从网页界面(前端)上传文件到服务器(后端). 放一下该模块的界面 ...

  3. ajax异步上传文件FormDate方式,html支持才可使用

    今天需要做一个头像的预览功能,所以我想到了异步上传文件. 总结几点: 异步上传难点: 文件二进制流如何获取 是否需要设置表单的头,就是content-Type那里.异步,所以无所谓了吧. 其他就差不多 ...

  4. 使用ajax异步上传文件或图片(配合php)

    //html代码 <form enctype="multipart/form-data" id="upForm"> <input type=& ...

  5. 使用Ajax异步上传文件

    之前上传文件都是用表单form设置post请求和enctype类型: <form id="upload_form"action="" method=&qu ...

  6. Ajax 异步上传文件

    需要引用js jquery.form 前端代码 <form action="/Save" id="mainForm" method="post& ...

  7. ajax异步上传文件之data参数----小哈学js

    下载ajaxFileUpload.js(下载网址:http://fileuploadajax.codeplex.com/downloads/get/20976) 修改ajaxFileUpload.js ...

  8. (H5)FormData+AJAX+SpringMVC跨域异步上传文件

    最近都没时间整理资料了,一入职就要弄懂业务,整天被业务弄得血崩. 总结下今天弄了一个早上的跨域异步上传文件.主要用到技术有HTML5的FormData,AJAX,Spring MVC. 首先看下上传页 ...

  9. html5+php实现文件的断点续传ajax异步上传

    html5+php实现文件的断点续传ajax异步上传 准备知识:断点续传,既然有断,那就应该有文件分割的过程,一段一段的传.以前文件无法分割,但随着HTML5新特性的引入,类似普通字符串.数组的分割, ...

随机推荐

  1. Key Technologies Primer 读书笔记,翻译 --- Struct 学习 1

    原文链接:https://struts.apache.org/primer.html 本来想写成读书笔记的,结果还是变成翻译,谨作记录,学习.   1.HTML -- 见我前面文章 2.Interne ...

  2. 12Js_原型对象

    对象描述: 1. 每个对象中都有一个_proto_属性. JS世界中没有类(模具)的概念,对象是从另一个对象(原型)衍生出来的,所以每个对象中会有一个_proto_属性指向它的原型对象.(参考左上角的 ...

  3. 传统asp.net小心 async/await坑

    最近在改老项目时,干了一件自以为很有成就感的事,心想 “项目都是同步方法,为啥不用异步方法呢?”,于是有了异步方法,类型下面的代码(当然是举例子说明啊) //更新某人名下公司名称 public Tas ...

  4. 深度学习Tensorflow生产环境部署(上·环境准备篇)

    最近在研究Tensorflow Serving生产环境部署,尤其是在做服务器GPU环境部署时,遇到了不少坑.特意总结一下,当做前车之鉴. 1 系统背景 系统是ubuntu16.04 ubuntu@ub ...

  5. RISC-V指令集介绍 - 整数基本指令集

    1. 寄存器 32个x寄存器,RV32下x reg是32位宽 x0:硬连线 常数0 专门的零寄存器 x1-x31:31个通用reg 返回地址:没有强制要求那一个x作为lr,但是一般用x1 pc:额外的 ...

  6. setInterval()与setTimeout()的区别

    setInterval()-一旦被开启就会不断的执行,使用clearInterval()清除后将不再执行 setTimeout()-又称为一次定时器,定时器开启后只执行一次将不会接着执行,使用clea ...

  7. ubuntu16.04 离线安装nginx

    场景描述: 客户生产环境服务器,内网隔离无法访问互联网,需要准备好相应的安装包,离线部署. 服务器&软件包版本: 环境: ubunt16.04 gcc-4.8.4 包: nginx-1.8.1 ...

  8. Android--UI之ImageView

    前言 这篇博客聊一聊在Android下ImageView的使用,在此篇博客中,会讲解到ImageView的一些属性的使用,以及ImageView展示图片的放大.缩小.旋转等操作.最后再讲解一下Andr ...

  9. 浅谈《think in java》:一 对象导论总结

    清单1. 抽象机制,面向对象程序设计方式 java所基于Smalltalk的特性表现一种纯粹的面向对象设计方式: 万物都是对象 程序是对象的集合(容器),他们通过发送消息(发送请求)来告知彼此所要做的 ...

  10. shell 脚本实现文件对称加密

    前言 之前手机里管理密码的脚本,都是直接编写进纯文本然后进行多次归档及压缩来实现不明文存储,一直觉得不太安全,于是昨天晚上编写脚本实现了简单的文件对称加密. 网上文章都利用 openssl 来进行文件 ...