![3a59ce25a6e99223fc6aad1be4f391eb.png](https://img-blog.csdnimg.cn/img_convert/3a59ce25a6e99223fc6aad1be4f391eb.png)
文件的上传下载
以往我们让浏览器和服务器之间传输的都是普通文本数据,那么如果是文件怎么办?那么接下来我们就通过一个案例给大家展现一下文件的上传和下载
![d2ae18bf0e7a7023562cd99e9603fe95.png](https://img-blog.csdnimg.cn/img_convert/d2ae18bf0e7a7023562cd99e9603fe95.png)
目标1:向上数据库中增加一条学生信息,同时携带学生照片(文件的上传)
目标2:在浏览学生信息时,可以查看学生图片,并提供下载按钮(文件的下载)
1文件的上传
1.1页面展示效果
![81122b537cea220b5f76bcb9e45edb97.png](https://img-blog.csdnimg.cn/img_convert/81122b537cea220b5f76bcb9e45edb97.png)
1.2页面代码编写
<
注意:form表单的提交方式必须是post同时设置enctype属性必须是 multpart/form-data
1.3准备文件上传需要的jar包
![533b869aa97618bf54ed1782a6a62227.png](https://img-blog.csdnimg.cn/img_convert/533b869aa97618bf54ed1782a6a62227.png)
1.4后台收文件并保存到指定目录
package
![57ed1ff90790301d4de1798fe8d2e2d7.png](https://img-blog.csdnimg.cn/img_convert/57ed1ff90790301d4de1798fe8d2e2d7.png)
1.5文件上传常见问题处理
问题1 中文文件名乱码
解决:设置请求编码
// 设置请求编码为UTF-8
问题2:图片存储路径不在项目中,不能通过网略访问
解决:使用相对路径将文件目录存储项目中
/*指定文件的保存路径*/
问题3:多个同名文件上传存在命名冲突问题
解决:使用UUID生成文件名
/*指定文件的保存路径*/
问题4:文件大小不能控制
解决:通过item.getSize获取文件大小后判断
if
或者
fileUpload
但是后者会直接报错,用户体验感不好
问题5:文件类型不能控制
解决:通过截取后缀名判断
![65a4189fd57673bbd3bb4b6134d77373.png](https://img-blog.csdnimg.cn/img_convert/65a4189fd57673bbd3bb4b6134d77373.png)
if
问题6:如何获取普通表单项的值
解决: isFormField判断,通过getFieldName方法获取值
if
uploadController优化后的代码
package
在ShowStudent.jsp显示图片
<
2文件的下载
2.1页面效果展示
点击下载按钮实现文件下载功能
![55aebbde35c26dbb5aa1f46a3779df4b.png](https://img-blog.csdnimg.cn/img_convert/55aebbde35c26dbb5aa1f46a3779df4b.png)
2.2后台Controller
package
2.3同步页面处理
<
2.4异步页面处理
function
本节作业:
实现文件的上传和下载案例