在这里插入图片描述

SpringMVC 是一个基于 Java 的 Web 框架,它提供了方便的文件上传下载功能。下面是它的实现原理简要描述

  1. 文件上传

客户端通过表单(HTML 的 标签)将文件选择提交服务器
服务器接收请求后,SpringMVC 会将字节流形式的文件内容封装成 MultipartFile 对象
SpringMVC 使用 MultipartResolver 组件解析请求,将文件保存服务器上的临时目录中。
控制器方法使用 @RequestParam 注解或直接声明 MultipartFile 参数接收上传的文件。
控制器方法接收到文件后,可以进行处理例如保存数据库或者转存到指定目录

  1. 文件下载

客户发送下载请求,例如通过点击链接或者表单提交
服务器接收下载请求后,通过控制器方法处理请求。
控制器方法使用 HttpServletResponse 对象设置响应内容类型和头信息指定为文件下载
控制器方法使用 OutputStream 将文件内容写入 HttpServletResponse输出流。
客户接收响应后,展示下载对话框,让用户选择保存文件的位置
总结起来,文件上传原理是将文件通过表单提交服务器,SpringMVC 将其封装成 MultipartFile 对象然后进行处理;文件下载原理是将文件内容写入 HttpServletResponse 的输出流,让客户接收保存文件。SpringMVC 提供了方便的组件注解来简化文件上传下载操作

1、文件下载

使用ResponseEntity实现下载文件的功能

@RequestMapping("/testDown")
public ResponseEntity<byte[]&gt; 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/formdata
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&amp;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://blog.csdn.net/m0_60915009/article/details/134631229

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_21680.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注