java web上传文件和下载文件代码片段分享
发布时间 - 2026-01-10 22:44:50 点击率:次本文实例为大家分享了java web上传文件和下载文件的具体代码,供大家参考,具体内容如下
/**
* Purpose:上传文档
*
* @param req
* @param fileTitle
* @param fileType
* @param fileDesc
* @return
*/
@RequestMapping("upload")
public ModelAndView upload(HttpServletRequest req, String fileType, String fileDesc, String share) {
UserAllInfo userAll = (UserAllInfo) req.getSession().getAttribute("userAll");
ModelAndView mav = new ModelAndView();
// 获取文件的大小
String fileSize = "";
int length = req.getContentLength();
//转换成KB
double len1 = (double) (Math.round((length / 1024) * 100)) / 100;
//转换成MB
double len2 = (double) (Math.round((len1 / 1024) * 100)) / 100;
if (len2 > 1) {
fileSize = String.valueOf(len2) + "MB";
} else {
fileSize = String.valueOf(len1) + "KB";
}
//将请求转换成处理文件的请求
MultipartRequest mreq = (MultipartRequest) req;
//文件上传专用类
MultipartFile mfile = mreq.getFile("uploadFile");
// 得到上下文路径
String root = req.getSession().getServletContext().getRealPath("/");
File dir = new File(root);
// 获取文件名和文件的mime类型
String str = mfile.getOriginalFilename();
String[] st = str.split("\\.");
File savedFile = null;
try {
//在指定目录中创建一个新的空文件,文件名称加前缀"upload_"
savedFile = File.createTempFile("upload_", mfile.getOriginalFilename(), dir);
//将缓冲区的内容复制到新创建的文件中
FileCopyUtils.copy(mfile.getInputStream(), new FileOutputStream(savedFile));
} catch (Exception e) {
e.printStackTrace();
}
String path = savedFile.getPath();
// 将文件的信息封装在对象中
FileInfo file = new FileInfo();
if (userAll != null) {
file.setUploadPersonId(userAll.getUser().getUserId());
} else {
mav.setViewName("login");
return mav;
}
file.setFileName(st[0]);
file.setFilePath(path);
Date date = new Date();
file.setUploadDate(date);
file.setFileSize(fileSize);
file.setFileType(fileType);
file.setFileForm(st[1]);
if ("superman".equals(userAll.getUser().getUserNumber())) {
file.setFileShare("Y");
file.setCheckFlag("Y");
} else {
file.setFileShare(share);
file.setCheckFlag("N");
}
file.setDeleteFlag("N");
file.setDownloadTimes(0);
// 保存文件的信息
boolean bool = fileSer.saveFile(file);
String userNumber = userAll.getUser().getUserNumber();
//设置跳转界面
mav.setViewName("jsp/person/upload");
logSer.saveLog("用户\"" + userNumber + "\"上传文件\"" + file.getFileName() + "\"");
mav.getModel().put("bool", bool);
return mav;
}
/**
* Purpose:下载文档
*
* @param fileId 文件id
* @return
*/
@RequestMapping("download")
public void download(Integer fileId, HttpServletResponse resp) {
FileInfo file = new FileInfo();
//通过文件id获取文件的基本信息
file = fileSer.getFileById(fileId);
// 根据文件后缀名设置文件的mime类型
String mime = "application/";
switch (file.getFileForm()) {
case "doc":
mime = mime + "msword";
break;
case "docx":
mime = mime + "msword";
break;
case "pdf":
mime = mime + "pdf";
break;
case "xls":
mime = mime + "vnd.ms-excel";
case "ppt":
mime = mime + "vnd.ms-powerpoint";
break;
case "txt":
mime = "text/plain";
break;
default:
break;
}
resp.setContentType(mime);
String fileName = file.getFileName();
String name = "";
try {
// 将文件名使用utf-8编码格式编码,使其中的中文字符可以正常显示
name = URLEncoder.encode(fileName, "utf-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
// 弹框选择保存路径
resp.setHeader("content-disposition", "attachment;filename=" + name + "." + file.getFileForm()
+ ";filename*=utf-8''" + name + "." + file.getFileForm());
String filePath = file.getFilePath();
InputStream is = null;
OutputStream os = null;
try {
is = new BufferedInputStream(new FileInputStream(filePath));
os = new BufferedOutputStream(resp.getOutputStream());
byte[] buff = new byte[1024];
@SuppressWarnings("unused")
int count;
while ((count = is.read(buff)) != -1) {
os.write(buff);
}
//修改下载次数
fileSer.update(fileId);
} catch (Exception e) {
e.printStackTrace();
} finally {
//最后,要记得关闭输入流和输出流
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# java
# web
# 上传文件
# 下载文件
# JavaWeb 文件的上传和下载功能简单实现代码
# Javaweb实现上传下载文件的多种方法
# JavaWeb文件上传下载实例讲解(酷炫的文件上传技术)
# JavaWeb实现文件上传下载功能实例详解
# Java Servlet简单实例分享(文件上传下载demo)
# 转换成
# 文档
# 下载次数
# 使其
# 在对
# 跳转
# 大家分享
# 具体内容
# 到新
# 大家多多
# 正常显示
# 象中
# 文件上传
# 保存文件
# 上传
# 目录中
# 加前缀
# str
# getOriginalFilename
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速登录WAP自助建站平台?
利用 Google AI 进行 YouTube 视频 SEO 描述优化
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
html5的keygen标签为什么废弃_替代方案说明【解答】
微信小程序 闭包写法详细介绍
如何快速搭建高效可靠的建站解决方案?
WordPress 子目录安装中正确处理脚本路径的完整指南
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
千库网官网入口推荐 千库网设计创意平台入口
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
原生JS获取元素集合的子元素宽度实例
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
个人网站制作流程图片大全,个人网站如何注销?
如何快速辨别茅台真假?关键步骤解析
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
如何在局域网内绑定自建网站域名?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
js实现获取鼠标当前的位置
成都网站制作公司哪家好,四川省职工服务网是做什么用?
Laravel如何配置任务调度?(Cron Job示例)
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
百度浏览器如何管理插件 百度浏览器插件管理方法
如何在阿里云域名上完成建站全流程?
使用Dockerfile构建java web环境
如何基于PHP生成高效IDC网络公司建站源码?
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
Laravel如何实现多对多模型关联?(Eloquent教程)
Linux安全能力提升路径_长期防护思维说明【指导】
Thinkphp 中 distinct 的用法解析
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
HTML 中动态设置元素 name 属性的正确语法详解
微信h5制作网站有哪些,免费微信H5页面制作工具?
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
如何在宝塔面板创建新站点?
深圳网站制作培训,深圳哪些招聘网站比较好?
如何挑选优质建站一级代理提升网站排名?
如何在搬瓦工VPS快速搭建网站?
如何确保FTP站点访问权限与数据传输安全?
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】

