框架是基于spring+myBatis的。
前台页面的部分代码:
<form action="${ctx}/file/upLoadFile.do"method="post" enctype="multipart/form-data" id="form"><table><tbody ><tr ><td>上传文件:</td><td style="padding-left: 10px;"><input type="file" name="file" id="fileInput"></td><td style="padding-left: 80px;"><button type="submit" class="btn btn-primary btn-q btn-outline fa fa-upload"
class="easyui-validatebox" data-options="required:true">上传</button></td></tr><tr><td colspan="2"><span style="color:red">*上传文件格式为xls,xlsx,txt,csv文件!</span> </td>
</tr>
</tbody>
</table></form>
{
title : '操作',
halign : 'center',
align : 'center',
width : 80,
field : 'FILE_PATH',
formatter: function(value,row,index){
var path = "${ctx}/file/download.do?filePath=" + value ;
var button = '<button type="button" class="btn btn-primary btn-q btn-outline fa fa-download" class="easyui-validatebox"
data-options="required:true">下载</button>';
return "<a href='" + path + "'>" + button + "</a>";
}
上传功能的方法:
@RequestMapping("/upLoadFile")
public String upload(@RequestParam(value = "file", required = false) MultipartFile file, ModelMap model, HttpServletRequest request)
throws Exception {
//设置相对路径
String realPath = request.getSession().getServletContext().getRealPath("/upload");
//获取文件的格式
String extention = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
//对格式进行筛选
if(extention.equalsIgnoreCase("xls") || extention.equalsIgnoreCase("xlsx") || extention.equalsIgnoreCase("txt")
|| extention.equalsIgnoreCase("csv")) {
//在路径下创建文件夹
File f = new File(realPath);
String fileName = file.getOriginalFilename();
String uploadPath = realPath + File.separator + fileName;
if(!f.exists()) {
f.mkdir();
}
//文件的传输
file.transferTo(new File(uploadPath));
Upload upload = new Upload();
upload.setFileName(fileName);
upload.setFileLength(String.valueOf(file.getSize()));
upload.setFileOwner(super.getLoginUser(request).getLoginId());
upload.setFilePath("/upload/" + fileName);
//将文件的基本信息存到数据库
fileQueryService.saveFile(upload);
request.setAttribute("info","文件上传成功!");
} else {
request.setAttribute("info","文件类型不正确,请上传格式为xls,xlsx,txt,csv文件!");
}
return "page/file/fileInteraction";
}
下载功能的方法:
@RequestMapping("/download")
public String download(String filePath, HttpServletRequest request,
HttpServletResponse response) {
try {
//获取文件名
String fileName = filePath.substring(filePath.lastIndexOf("/")+1);
System.out.println(filePath);
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
//处理下载弹出框名字的编码问题
response.setHeader("Content-Disposition", "attachment;fileName="
+ new String( fileName.getBytes("gb2312"), "ISO8859-1" ));
//获取文件的下载路径
String path = request.getSession().getServletContext().getRealPath(filePath);
System.out.println(path);
//利用输入输出流对文件进行下载
InputStream inputStream = new FileInputStream(new File(path));
OutputStream os = response.getOutputStream();
byte[] b = new byte[2048];
int length;
while ((length = inputStream.read(b)) > 0) {
os.write(b, 0, length);
}
// 这里主要关闭。
os.close();
inputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// 返回值要注意,要不然就出现下面这句错误!
//java+getOutputStream() has already been called for this response
return null;
}
最终效果:

下载页面:

文件的上传和下载完整版demo下载:
https://dwz.cn/fgXtRtnu
- JavaWeb实现文件上传下载功能实例解析
转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...
- JavaWeb实现文件上传下载功能实例解析 (好用)
转: JavaWeb实现文件上传下载功能实例解析 转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web ...
- javaWeb中的文件上传下载
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- java中的文件上传下载
java中文件上传下载原理 学习内容 文件上传下载原理 底层代码实现文件上传下载 SmartUpload组件 Struts2实现文件上传下载 富文本编辑器文件上传下载 扩展及延伸 学习本门课程需要掌握 ...
- WEB文件上传下载功能
WEB文件上传下载在日常工作中经常用到的功能 这里用到JS库 http://files.cnblogs.com/meilibao/ajaxupload.3.5.js 上传代码段(HTML) <% ...
- Struts2实现文件上传下载功能(批量上传)
今天来发布一个使用Struts2上传下载的项目, struts2为文件上传下载提供了好的实现机制, 首先,可以先看一下我的项目截图 关于需要使用的jar包,需要用到commons-fileupload ...
- JavaWeb 后端 <十四> 文件上传下载
1.文件上传与下载 案例: 注册表单/保存商品等相关模块! --à 注册选择头像 / 商品图片 (数据库:存储图片路径 / 图片保存到服务器中指定的目录) 1.1 文件上传 文件上传,要点: 前台: ...
- Java中实现文件上传下载的三种解决方案
第一点:Java代码实现文件上传 FormFile file=manform.getFile(); String newfileName = null; String newpathname=null ...
- webuploader项目中多文件上传实例
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
随机推荐
- Android:webView加载h5网页视频,播放不了,以及横屏全屏的问题和实现自定义加载进度条的效果
1.webView加载h5网页视频,播放不了,android3.0之后要在menifest添加硬件加速的属性 android:hardwareAccelerated="true". ...
- oracle 11g用exp无法导出空表的解决方案
racle 11g中有个新特性,当表无数据时,不分配segment,以节省空间,当我们用exp导出空表时,无法导出. 解决方法是两个方面, 一是处理现有的空表,让其能导出: 二是设置参数,让后续的新的 ...
- ROS安装
本文参考地址:http://ros.exbot.net/wiki/cn(2f)indigo(2f)Installation(2f)Ubuntu.html http://wiki.ros.org/ind ...
- .netcore webapi iis 虚拟目录下载apk文件
首先贴上微软的文档:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files 参考网址:http://www.cnb ...
- IDEA配置maven,jdk,编码
1.电脑已解压maven,修改好settings.xml文件,本地仓库,下载远程镜像 2.
- u-boot之怎么实现分区
启动参数bootcmd=nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0中kernel在哪定义,为什么可以直接引用?针对这个问题展开思考最终定位到 ...
- android studio 安装过程
下载 安装版本:3.0.1 下载地址:https://pan.baidu.com/s/1Uq6QSZXpmWUiBW6K-tRqKw 密码:zbtb 安装 双击安装包进行安装,选择安装位置,安装完成打 ...
- LINUX查看网卡UUID
有时我们不小心将/etc/sysconfig/network-scripts/ifcfg-eth0(可以通过此文件进行查看UUID)删除或者损坏,要重新编辑ifcfg-eth0文件时不知道网卡的UUI ...
- 轻博客类Web原型制作分享——Tumblr
Tumblr(汤博乐)成立于2007年,是目前全球最大的轻博客网站,也是轻博客网站的始祖. Tumblr是一种介于传统博客和微博之间的全新媒体形态,既注重表达,又注重社交,而且注重个性化设置,成为当前 ...
- 《C#从现象到本质》读书笔记(二)第2章 C#类型基础(上)
<C#从现象到本质>读书笔记第二篇 第2章 C#类型基础(上) 类型指的是集合{类,结构,接口,枚举,委托}中的任意一个成员.任何拥有某类型的值(value)称为某类型的一个实例(inst ...