利用 FormData 对象和 Spring MVC 配合实现Ajax文件下载功能

Ajax文件下载的实现方法~ 今天编程之家 jb51.cc 分享如何文件上载功能:

步骤

1.导入组件并准备静态脚本

rush:html;toolbar:false">
 commons-fileupload
 commons-fileupload
 1.3.2

Ajax 文件上载

 
 

1.绑定事件到按钮

rush:js;toolbar:false">$("upload").click(ajaxUpload);

2.获取文件

rush:js;toolbar:false">var file1 = $("#file1")[0].files[0];
var file2 = $("#file2")[0].files[0];

3.创建内存中的表单对象,并添加向服务器传输的数据

rush:js;toolbar:false">//创建内存中的表单对象
var form = new FormData();
//向其中添加要传输的数据
form.append("userfile1", file1);
form.append("userfile2", file2);

4.ajax()上传对象

rush:js;toolbar:false">$.ajax({
url:'user/upload.do',//请求地址
data: form, //请求参数
type: 'POST',//请求类型
dataType: 'json',//服务器返回的数据类型
contentType: false,//没有设置任何内容类型头信息
processData: false, //见jQuery_api详解
success: function(obj){ //成功时回调函数,obj表示服务器返回的数据
if(obj.state==0){
$('#result').html("成功!"); 
}
}
});

5.Spring-MVC表现层

rush:js;toolbar:false">@RequestMapping("/upload.do")
@ResponseBody
public JsonResult upload( 
multipartfile userfile1, 
multipartfile userfile2) throws Exception{
//Spring MVC 中可以利用 multipartfile 
//接收 上载的文件文件中的一切数据
//都可以从 multipartfile 对象中找到
//获取上再是原始文件名
String file1 = 
userfile1.getoriginalFilename();
String file2 = 
userfile2.getoriginalFilename();
System.out.println(file1);
System.out.println(file2);
//保存文件的3种方法:
//1. transferTo(目标文件)
//将文件直接保存到目标文件, 可以处理大文件
//2. userfile1.getBytes() 获取文件的全部数据
//将文件全部读取到内存, 适合处理小文件!!
//3. userfile1.getInputStream()
//获取上载文件的流, 适合处理大文件
//保存的目标文件夹: /home/soft01/demo
File dir = new File("D:/demo");
dir.mkdir();
File f1 = new File(dir, file1);
File f2 = new File(dir, file2);
//第一种保存文件
//userfile1.transferTo(f1);
//userfile2.transferTo(f2);
//第三种 利用流复制数据
InputStream in1 = userfile1.getInputStream();
FileOutputStream out1 = 
new FileOutputStream(f1);
int b;
while((b=in1.read())!=-1){
out1.write(b);
}
in1.close();
out1.close();
InputStream in2 = userfile2.getInputStream();
FileOutputStream out2=
new FileOutputStream(f2);
byte[] buf= new byte[8*1024];
int n;
while((n=in2.read(buf))!=-1){
out2.write(buf, 0, n);
}
in2.close();
out2.close();
return new JsonResult(true);
}

总结

以上所述是小编给大家介绍的利用 FormData 对象和 Spring MVC 配合实现Ajax文件下载功能,希望对大家有所帮助。程序员遇到问题都会上(编程之家jb51.cc)查找问题解答方法!如果觉得站点还不错,随手转发给程序员朋友一下!

原文链接:http://www.cnblogs.com/chentging/p/7193630.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要介绍了spring的事务传播属性REQUIRED_NESTED的原理介绍,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。传统事务中回滚点的使...
今天小编给大家分享的是一文解析spring中事务的传播机制,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获...
这篇文章主要介绍了SpringCloudAlibaba和SpringCloud有什么区别,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。Spring Cloud Netfli...
本篇文章和大家了解一下SpringCloud整合XXL-Job的几个步骤。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。第一步:整合pom文件,在S...
本篇文章和大家了解一下Spring延迟初始化会遇到什么问题。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。List 坑列表 = new ArrayList(2);...
这篇文章主要介绍了怎么用Jenkins+docker发布Springbot服务的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Jenkins+docke...
本篇内容主要讲解“SpringCloud启动失败问题如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringClo...
这篇“SpringBean实例化方式怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大...
今天小编给大家分享一下spring或springboot怎么调整bean加载顺序的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文...
这篇文章主要介绍“Spring导出可以运行的jar包问题如何解决”,在日常操作中,相信很多人在Spring导出可以运行的jar包问题如何解决问题上存在疑惑,小编查阅了各...
本文小编为大家详细介绍“SpringCloudgateway自定义错误处理Handler怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringCloud&n...
这篇文章主要讲解了“Spring静态代理和动态代理概念及使用方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来
这篇文章主要讲解了“SpringMVC注解式开发案例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“S...
这篇文章主要介绍“Spring事务管理怎么正确使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring事务管理怎
这篇“SpringAOP核心功能源码分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家...
在前面的教程中,我们已经看到了如何使用 Spring Data 分页 Web 支持。在本教程中,我们将了解如何使用排序支持。在基于 Web 的应用程序中应用排序主要有两种方法:按可分页处理程序参数排序我们在前面的示例中使用过,但没有任何排序查询参数。除了分页信息外,还可以设置排序信息(查看这个和)。按排序处理程序参数排序我们也可以用作控制器方法参数(查看我们的)。@SortDefault注释此批注定义将 Sort 实例注入控制器处理程序方法时要使用的默认排序选项。
因此,让我们定义一个简单的存储库接口,该接口适用于。正如我们在介绍中提到的,Spring Data Web 支持允许我们在控制器方法中使用请求参数来构建 Querydsl 的。为了了解如何使用 Spring Data Web 支持来改进控制器的功能,让我们创建一个基本的 Spring 启动项目。很明显,Querydsl Web 支持是一个非常强大的功能,我们可以用来获取与给定条件匹配的数据库记录。现在,我们至少需要实现一个基本的 RESTful 控制器,它充当客户端和存储库层之间的中间层。
中,我们看到了如何在Spring MVC控制器方法中使用参数。以下示例显示了如何将 Spring 数据分页与 Thymeleaf 视图一起使用。我们还将使用注释来更改默认页面大小。本地主机:8080/员工。
然而,这种支持是 解释得非常快,因为我们只需要添加正确的参数并返回值 到我们的存储库界面。我们可以改用接口,如果我们不这样做 需要项目或页面的总数,例如,如果我们只想提供 “上一页”和“下一页”按钮,不需要“第一页”和“最后一页” 按钮。如果我们想在 Web 控制器中返回一个(或)项,它需要接受 定义分页参数的参数,将其传递给数据库, ,然后将 aobject 返回给客户端。在本教程中,我们将检查 Spring Data 的分页支持,并创建如何使用的示例 并对其进行配置以及有关其如何在幕后工作的一些信息。
总而言之,我们学习了如何使用Spring MVC和Spring Data JPA在RESTful Web服务中实现分页。您可以在我们的GitHub 存储库中找到上述示例。相关春季 JPA 中的分页和排序带有 Spring 引导的 RESTful JPA 存储库带有示例的 Spring 引导文件上传春季数据JPA简介Spring 安全性中的自定义登录表单。