SpringMVC 是一个基于 Java 的 Web 框架,它提供了方便的文件上传和下载功能。下面是它的实现原理简要描述:
- 文件上传:
客户端通过表单(HTML 的 标签)将文件选择并提交到服务器。
服务器接收到请求后,SpringMVC 会将字节流形式的文件内容封装成 MultipartFile 对象。
SpringMVC 使用 MultipartResolver 组件解析请求,将文件保存在服务器上的临时目录中。
控制器方法使用 @RequestParam 注解或直接声明 MultipartFile 参数接收上传的文件。
控制器方法在接收到文件后,可以进行处理,例如保存到数据库或者转存到指定目录。
- 文件下载:
客户端发送下载请求,例如通过点击链接或者表单提交。
服务器接收到下载请求后,通过控制器方法处理请求。
控制器方法使用 HttpServletResponse 对象设置响应的内容类型和头信息,指定为文件下载。
控制器方法使用 OutputStream 将文件内容写入 HttpServletResponse 的输出流。
客户端接收到响应后,展示下载对话框,让用户选择保存文件的位置。
总结起来,文件上传的原理是将文件通过表单提交到服务器,SpringMVC 将其封装成 MultipartFile 对象,然后进行处理;文件下载的原理是将文件内容写入 HttpServletResponse 的输出流,让客户端接收并保存文件。SpringMVC 提供了方便的组件和注解来简化文件上传和下载的操作。
1、文件下载
使用ResponseEntity实现下载文件的功能
@RequestMapping("/testDown")
public ResponseEntity<byte[]> testResponseEntity(HttpSession session) throws IOException {
//获取ServletContext对象
ServletContext servletContext = session.getServletContext();
//获取服务器中文件的真实路径
String realPath = servletContext.getRealPath("/static/img/1.jpg");
//创建输入流
InputStream is = new FileInputStream(realPath);
//创建字节数组
byte[] bytes = new byte[is.available()];
//将流读到字节数组中
is.read(bytes);
//创建HttpHeaders对象设置响应头信息
MultiValueMap<String, String> headers = new HttpHeaders();
//设置要下载方式以及下载文件的名字
headers.add("Content-Disposition", "attachment;filename=1.jpg");
//设置响应状态码
HttpStatus statusCode = HttpStatus.OK;
//创建ResponseEntity对象
ResponseEntity<byte[]> responseEntity = new ResponseEntity<>(bytes, headers, statusCode);
//关闭输入流
is.close();
return responseEntity;
}
2、文件上传
文件上传要求form表单的请求方式必须为post,并且添加属性enctype=“multipart/form-data”
SpringMVC中将上传的文件封装到MultipartFile对象中,通过此对象可以获取文件相关信息
上传步骤:
a>添加依赖:
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
b>在SpringMVC的配置文件中添加配置:
<!--必须通过文件解析器的解析才能将文件转换为MultipartFile对象-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
c>控制器方法:
@RequestMapping("/testUp")
public String testUp(MultipartFile photo, HttpSession session) throws IOException {
//获取上传的文件的文件名
String fileName = photo.getOriginalFilename();
//处理文件重名问题
String hzName = fileName.substring(fileName.lastIndexOf("."));
fileName = UUID.randomUUID().toString() + hzName;
//获取服务器中photo目录的路径
ServletContext servletContext = session.getServletContext();
String photoPath = servletContext.getRealPath("photo");
File file = new File(photoPath);
if(!file.exists()){
file.mkdir();
}
String finalPath = photoPath + File.separator + fileName;
//实现上传功能
photo.transferTo(new File(finalPath));
return "success";
}
3. 好书推荐
包容简介:
本书全面、系统地阐述以人脸识别为代表的信息安全技术,可以降低用户数据信息安全风险。本书主要内容包括人工智能和信息安全概述,挖掘人脸可辨识信息的关键技术,非约束人脸识别、小样本人脸识别、代价敏感人脸、快速正则化联合分类等问题的解决方案,深层局部字典和联合加权核稀疏分类器的构建方案,提升用户信息网络安全性的各种方案,用户信息网络安全的未来等。
本书条理清晰、逻辑性强、内容充实、涵盖范围广,具有较强的学术性和实用性,可供广大人工智能初学者及相关专业的师生学习和参考。
目录
第1章 人工智能和信息安全概述 1
1.1 以人脸识别为主体的用户信息网络安全技术 1
1.1.1 人脸识别技术的引入 2
1.1.2 人脸识别技术的发展史 5
1.1.3 用户信息网络安全性 12
1.2 机器学习与人工智能、数据挖掘和网络安全的融合 16
1.2.1 机器学习与人工智能 16
1.2.2 机器学习与数据挖掘 17
1.2.3 机器学习与网络安全 18
1.3 机器学习和信息安全发展趋势 20
1.4 本章小结 22
第2章 挖掘用户可辨识信息的方法 23
2.1 稀疏表示 23
2.2 协同表示 26
2.3 核稀疏表示和核协同表示 27
2.4 稀疏字典学习 29
2.5 深度学习 31
2.5.1 深度学习的模型 31
2.5.2 多层感知机 33
2.5.3 激活函数和损失函数 35
2.5.4 优化算法 38
2.5.5 卷积神经网络 40
2.6 本章小结 42
第3章 非约束性用户的识别方法 43
3.1 非约束性人脸识别问题 43
3.2 相关工作的回顾 46
3.2.1 鲁棒稀疏表示 46
3.2.2 鲁棒稀疏编码算法 47
3.3 可变遮挡探测和迭代恢复稀疏表示模型 47
3.3.1 VOD过程 49
3.3.2 IR过程 50
3.3.3 VOD&IR算法描述 50
3.4 实验结果及分析 52
3.4.1 参数设置 52
3.4.2 模拟块遮挡 53
3.4.3 AR人脸数据库的真实遮挡 58
3.4.4 可变遮挡地图精确性评估 62
3.5 本章小结 63
第4章 小样本用户的识别方法 65
4.1 小样本用户识别问题 65
4.2 样本组错位原子字典联合核协同表示分类模型 67
4.2.1 仿射变换原理 68
4.2.2 样本组错位原子字典 69
4.2.3 联合核协同表示模型 70
4.3 实验结果及分析 71
4.3.1 Georgia Tech人脸数据库 72
4.3.2 Labeled Faces in the Wild人脸数据库 74
4.3.3 Caltech人脸数据库 75
4.3.4 相似方法的比较 77
4.3.5 样本组错位原子方案的评估 78
4.4 本章小结 80
第5章 代价敏感人脸认证安全体系 81
5.1 代价敏感人脸识别问题 81
5.2 基于高斯相似性关系的加权二重字典 83
5.2.1 高斯加权稀疏表示算法 83
5.2.2 浅层全局加权二重字典的建立 84
5.3 基于限定的表情动作模式的代价敏感人脸认证模型 85
5.3.1 CSFV_LEP模型的原理 85
5.3.2 CSFV_LEP算法描述 87
5.3.3 CSFV_LEP算法复杂度分析 89
5.4 实验结果及分析 89
5.4.1 参数设置 89
5.4.2 模型的安全和实用性能分析 91
5.5 本章小结 99
第6章 快速人脸识别的流形正则化方法 101
6.1 快速人脸识别问题 101
6.2 核协同流形正则化模型 103
6.3 实验仿真及结果分析 105
6.3.1 参数设置 105
6.3.2 Extended Yale B人脸数据库上的人脸识别实验 105
6.3.3 AR人脸数据库上的人脸识别实验 110
6.3.4 FERET人脸数据库上的人脸识别实验 112
6.3.5 Lab2人脸数据库上的人脸识别实验 114
6.3.6 参数的影响 116
6.4 本章小结 119
第7章 分层建模大规模人脸认证方法 121
7.1 大规模人脸识别问题 121
7.2 深度学习框架 123
7.2.1 卷积神经网络 123
7.2.2 经典的卷积神经网络结构 124
7.2.3 迁移学习 126
7.3 深层局部字典的建立 128
7.4 联合加权核协同表示 130
7.5 部分实验结果 131
7.5.1 CMU-PIE人脸数据库上的人脸识别实验 131
7.5.2 CMU-PIE人脸数据库上的加噪遮挡人脸识别实验 132
7.5.3 LFW人脸数据库上的无遮挡人脸识别实验 133
7.5.4 LFW人脸数据库上的同源遮挡人脸识别实验 134
7.6 本章小结 135
第8章 提升用户信息网络安全性的方法 137
8.1 以人脸识别为主体的信息安全系统 137
8.2 用户信息网络安全的保护方法 141
8.3 大数据环境下提升用户信息安全性的建议 144
8.4 本章小结 148
第9章 用户信息网络安全的未来 149
9.1 用户信息资源的多元化趋势 149
9.1.1 用户信息资源的多样性 150
9.1.2 用户信息需求的差异性 155
9.2 网络信息资源及其共享与保密 157
9.2.1 网络信息资源 157
9.2.2 网络信息资源的共享与保密 159
9.3 用户信息网络安全技术的发展前景 161
9.4 本章小结 164
参考文献 167
附录A 缩略语 175
购买链接 https://item.jd.com/13621817.html文章来源:https://www.toymoban.com/news/detail-751968.html
文章来源地址https://www.toymoban.com/news/detail-751968.html
到了这里,关于SpringMVC 实现文件的上传和下载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!