本文实例为大家分享了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
相关文章:
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
微信推文制作网站有哪些,怎么做微信推文,急?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
电商平台网站制作流程,电商网站如何制作?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
威客平台建站流程解析:高效搭建教程与设计优化方案
宝塔新建站点为何无法访问?如何排查?
SQL查询语句优化的实用方法总结
自助网站制作软件,个人如何自助建网站?
南京网站制作费用,南京远驱官方网站?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
PHP 500报错的快速解决方法
TestNG的testng.xml配置文件怎么写
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
如何通过服务器快速搭建网站?完整步骤解析
建站之星后台管理:高效配置与模板优化提升用户体验
简历在线制作网站免费,免费下载个人简历的网站是哪些?
如何在万网ECS上快速搭建专属网站?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
如何在景安云服务器上绑定域名并配置虚拟主机?
浅析上传头像示例及其注意事项
专业商城网站制作公司有哪些,pi商城官网是哪个?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
如何构建满足综合性能需求的优质建站方案?
北京网站制作的公司有哪些,北京白云观官方网站?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?
宝塔建站助手安装配置与建站模板使用全流程解析
香港服务器网站推广:SEO优化与外贸独立站搭建策略
宝塔建站无法访问?如何排查配置与端口问题?
如何通过商城免费建站系统源码自定义网站主题?
,网页ppt怎么弄成自己的ppt?
建站之星如何助力网站排名飙升?揭秘高效技巧
如何在IIS中配置站点IP、端口及主机头?
如何在香港免费服务器上快速搭建网站?
如何通过远程VPS快速搭建个人网站?
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
网站制作话术技巧,网站推广做的好怎么话术?
北京专业网站制作设计师招聘,北京白云观官方网站?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
如何选择适合PHP云建站的开源框架?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
,怎么用自己头像做动态表情包?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
*请认真填写需求信息,我们会在24小时内与您取得联系。