ssm文件上传下载比较详细的案例
背景:ssm框架
接下来,我会介绍单文件上传,下载,多文件的上传,下载,使用ajax进行文件的上传下载,和普通的表单提交的文件上传下载。
只要做项目,总是少不了文件的操作,好了废话不多说,直接上代码!
前提:需要在springmvc的配置文件里面加一个文件解析器,这个必须要有!!!
<!-- 定义文件解释器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置默认编码 -->
<property name="defaultEncoding" value="utf-8"></property>
<!-- 上传图片最大大小5M-->
<property name="maxUploadSize" value="5242440"></property>
</bean>
随便提下:需要的jar包,我项目使用的maven构建,直接添加的依赖,jar包是下面两个:
commons-fileupload-1.3.2.jar
commons-io-2.2.jar
一、单文件的文件上传、下载
上传:前台
<form id ="form2" action="load/upload2" enctype="multipart/form-data" method="post">
<input type = "file" name= 'file' />
<input type="text" name="name" value="dzf"/>
<input type="button" id = "button2" value="ajax上传" onclick="fileupload2()">
<input type ="submit" value="直接上传">
</form>
function fileupload2(){
var formData = new FormData($("#form2")[0]);
$.ajax({
url:'load/upload2',
type:'post',
data:formData,
//必须false才会自动加上正确的Content-Type
contentType: false,
//必须false才会避开jQuery对 formdata 的默认处理
//XMLHttpRequest会对 formdata 进行正确的处理
processData: false,
success:function(data){
alert(data);
},
error:function(data){
alert(data);
alert("后台发生异常");
},
cache:false,
async:true
});
}
后台:
/**
* 单个文件上传
* @param request
* @return
*/
@RequestMapping(value="/upload2",produces="text/html;charset=utf-8")
@ResponseBody
private String upload2(@RequestParam("file")CommonsMultipartFile partFile,HttpServletRequest request) {
try {
String path = request.getServletContext().getRealPath("/upload");
String name = request.getParameter("name");
log.info("其他的参数{}",name);
log.info("upload2---------------start---------------------");
log.info("这个临时文件的路径是[{}]", path);
String filename = partFile.getOriginalFilename();
log.info("文件的名字:{}",filename);
File file = new File(path+"/"+filename);
InputStream inputStream = partFile.getInputStream();
FileUtils.copyInputStreamToFile(inputStream, file);
if(inputStream!=null){
inputStream.close();
}
return "文件上传成功!";
} catch (Exception e) {
e.printStackTrace();
return "文件上传失败!";
}
}
下载:前台
<form action="load/down1" name="form3" id = "form3" method="post">
<input type = "submit" value="普通文件下载">
</form>
后台:
/**
* 文件下载
* 单个文件下载
* @param request
* @return
* @throws IOException
*/
@RequestMapping("/down1")
private void down(HttpServletRequest request,HttpServletResponse response) throws IOException {
String path = request.getServletContext().getRealPath("/upload");
File file = new File(path);
File[] files = file.listFiles();
String name = files[0].getName();//随机获取一个文件,实际中按需编写代码
System.out.println("文件的名字:"+name);
response.addHeader("content-disposition", "attachment;filename="+name);
FileUtils.copyFile(files[0], response.getOutputStream());
}
二、多文件的上传和下载
上传-前台:
<form id ="form5" action="load/upload3" enctype="multipart/form-data" method="post">
<input type = "file" name= 'file' />
<input type = "file" name= 'file' />
<input type = "file" name= 'file' />
<input type="text" name="name" value="dzf"/>
<input type="button" id = "button2" value="多文件ajax上传" onclick="fileupload3()">
<input type ="submit" value="多文件直接上传">
</form>
function fileupload3(){
var formData = new FormData($("#form5")[0]);
$.ajax({
url:'load/upload3',
type:'post',
data:formData,
//必须false才会自动加上正确的Content-Type
contentType: false,
//必须false才会避开jQuery对 formdata 的默认处理
//XMLHttpRequest会对 formdata 进行正确的处理
processData: false,
success:function(data){
alert(data);
},
error:function(data){
alert(data);
alert("后台发生异常");
},
cache:false,
async:true
});
}
上传-后台:
/**
* 多个文件上载
* @param request
* @return
*/
@RequestMapping(value="/upload3",produces="text/html;charset=utf-8")
@ResponseBody
private String upload3(@RequestParam("file")CommonsMultipartFile[] partFiles,HttpServletRequest request) {
InputStream inputStream = null;
try {
String path = request.getServletContext().getRealPath("/upload");
String name = request.getParameter("name");
log.info("其他的参数{}",name);
log.info("upload2---------------start---------------------");
log.info("这个临时文件的路径是[{}]", path);
for (int i = 0; i < partFiles.length; i++) {
String filename = partFiles[i].getOriginalFilename();
log.info("文件的名字:{}",filename);
File file = new File(path+"/"+filename);
inputStream = partFiles[i].getInputStream();
FileUtils.copyInputStreamToFile(inputStream, file);
}
if(inputStream!=null){
inputStream.close();
}
return "文件上传成功!";
} catch (Exception e) {
e.printStackTrace();
return "文件上传失败!";
}
}
一次性下载多个文件,我们需要把文件放到一个压缩包里去
下载-前台:
<form action="load/down2" name="form4" id = "form4" method="post">
<input type = "submit" value="压缩文件下载">
</form>
下载-后台:
/**
* 文件下载,一下次下载多个文件
* 思路:先将多个文件压缩到一个压缩包里去,然后传到前台
* @param request
* @return
* @throws IOException
*/
@RequestMapping("/down2")
private void down2(HttpServletRequest request,HttpServletResponse response) throws IOException {
String path = request.getServletContext().getRealPath("/upload");
File file = new File(path);
File[] files = file.listFiles();
File zipFile =new File("test.zip");
if(!zipFile.exists()){
zipFile.createNewFile();
}
String zipName = zipFile.getName();
log.info("压缩文件的名字:{}",zipName);
response.addHeader("Content-Disposition", "attachment;filename="+zipName);
//定义输出类型
// response.setContentType("application/zip");
ZipOutputStream zip = new ZipOutputStream(new FileOutputStream(zipFile));
BufferedInputStream in =null;
log.info("文件的个数{}",files.length);
for(int i = 0;i<files.length;i++){
String name = files[i].getName();
System.out.println("文件的名字:"+name);
ZipEntry zipEntry = new ZipEntry(name);
zip.putNextEntry(zipEntry);
in = new BufferedInputStream(new FileInputStream(files[i]));
int len = 0;
byte [] btyes = new byte[1024*4];
while((len=in.read(btyes))!=-1){
zip.write(btyes, 0, len);
}
}
zip.flush();
zip.close();
in.close();
FileUtils.copyFile(zipFile, response.getOutputStream());
if(zipFile.exists()){
if(zipFile.delete()){
log.info("压缩包删成功!!");
}else{
log.info("压缩包产出失败!!");
} }
}
到此,文件的上传、下载实例代码已经全部结束!
ssm文件上传下载比较详细的案例的更多相关文章
- springmvc文件上传下载简单实现案例(ssm框架使用)
springmvc文件上传下载实现起来非常简单,此springmvc上传下载案例适合已经搭建好的ssm框架(spring+springmvc+mybatis)使用,ssm框架项目的搭建我相信你们已经搭 ...
- JAVA Web 之 struts2文件上传下载演示(二)(转)
JAVA Web 之 struts2文件上传下载演示(二) 一.文件上传演示 详细查看本人的另一篇博客 http://titanseason.iteye.com/blog/1489397 二.文件下载 ...
- nodejs+express-实现文件上传下载管理的网站
Nodejs+Express-实现文件上传下载管理的网站 项目Github地址(对你有帮助记得给星哟):https://github.com/qcer/updo 后端:基于nodejs的express ...
- Java实现FTP批量大文件上传下载篇1
本文介绍了在Java中,如何使用Java现有的可用的库来编写FTP客户端代码,并开发成Applet控件,做成基于Web的批量.大文件的上传下载控件.文章在比较了一系列FTP客户库的基础上,就其中一个比 ...
- java实现文件上传下载
喜欢的朋友可以关注下,粉丝也缺. 今天发现已经有很久没有给大家分享一篇技术文章了,于是想了一下给大家分享一篇java实现文件上传下载功能的文章,不喜欢的希望大家勿喷. 想必大家都知道文件的上传前端页面 ...
- SSM文件上传
**自己对于SSM文件上传的一些心得** 刚开始的时候也是在网上寻找一些简单的案例,可能我的这篇文章不是最好的,但是这些都是我自己慢慢的摸索以及自己的尝试的一些心得,希望对各位有所帮助. 其实文件的上 ...
- react-native之文件上传下载
目录 文件上传 1.文件选择 2.文件上传 1.FormData对象包装 2.上传示例 文件下载 最近react-native项目上需要做文件上传下载的功能,由于才接触react-native不久,好 ...
- SSM整合 上传下载之添加商品
上传下载细节: 导入xml配置文件!! Controller中要配置存储路径,调用transferto上传文件 上传图片 要将图片的类设置为 MultipartFile 图片下载: 源码: 页面展示: ...
- Struts的文件上传下载
Struts的文件上传下载 1.文件上传 Struts2的文件上传也是使用fileUpload的组件,这个组默认是集合在框架里面的.且是使用拦截器:<interceptor name=" ...
随机推荐
- 小知识,大智慧(restframework 拾忆)
一.直接对query_set序列化,在页面展示的效果是Unicode 编码格式 ,可在json 序列化时候加入一个参数 course_query = DegreeCourse.objects.all( ...
- Laravel 5.1 Blade模板引擎
为什么要使用blade 它是干什么用的? blade模板引擎使我们写HTML页面的地方,使用它是因为它能给我们提供很多的遍历,减少代码的重复率 提高开发效率.我们写blade的路径是 resource ...
- wifidog 认证
首先简介一下什么是Portal认证.Portal认证.通常也会叫Web认证.未认证用户上网时,设备强制用户登录到特定站点,用户能够免费訪问当中的服务.当用户须要使用互联网中的其他信息时,必须在门户站点 ...
- Charles常用设置
一.软件说明 Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析. 二.mock数据 场景说明: 使用步骤: 1.保存待测试 ...
- php 代码的执行
PHP内核的实现和世界上绝大数的程序一样,接收输入数据,做相应处理后输出结果.用PHP编写的代码就是输入数据,PHP内核对编写的代码进行解释和运算,最后返回运算结果.当编写的PHP代码给内核去执行的时 ...
- VMware下安装centos6.7的步骤
一.虚拟机的创建 1.点击创建新的虚拟机(图片红框的位置) 2.选择自定义安装.下一步(根据自己的需要有选择的进行选择) 3.新装的虚拟机的版本和虚拟机兼容的产品以及这个版本的虚拟机的限制(这个窗口没 ...
- 三维空间直线最近点对hdu4741
//求两条直线之间的关系(三维) //输入:两条不为点的直线 //输出:相交返回XIANGJIAO和交点p,平行返回PINGXING,共线返回GONGXIAN int LineAndLine(Line ...
- mysql 日期加减天数
MySQL 为日期增加一个时间间隔:date_add() now() //now函数为获取当前时间 select date_add(now(), interval 1 day); - 加1 ...
- 在执行save操作时候出现的诡异!
情景:有一份excel数据需要导入到数据库中,想了想就写了一个导入excel的小功能. .............................准备使用时候,就开搞了,擦! 什么鬼??? 全程无报错 ...
- xlwt 模块 操作excel
1.xlwt 基本用法 import xlwt #1 新建文件 new_file = open('test.xls', 'w') new_file.close() #2 创建工作簿 wookbook ...