文件上传
1.文件上传的应用场景:提交作业 上传头像 提交简历(上传附件) 上传商品,图书图片
2.文件上传的前台如何编写以及注意事项:
1.肯定需要用到表单
2.文件上传的那一栏需要提供 input的type=file的组件,同样需要加name给后台获取
3.回顾form表单的三大属性:
A.action:表单的提交路径
B.method:表单的提交方式,2大默认值,一般都是post,很少使用get
get/post的区别:get不安全会把数据暴露在URL地址上,可以携带的数据非常少只有几KB,速度较快
post安全不会把数据暴露在URL地址上,可以携带的数据非常多,速度较慢
C.enctype:表单的类型 三大默认值:
a.普通表单:application/x-www-form-urlencoded 默认就是
b.功能表单:multipart/form-data 普通表单的升级版,可以用来实现文件上传
c.功能表单:text/plain 普通表单的升级版,可以用来实现大文本表单提交
4.form表单属性需要注意的是:1.method必须为post 2.enctype必须为multipart/form-data
----------------------------------------------------------------------------------------------------------
以上暂时省略文件上传相关的数据校验
----------------------------------------------------------------------------------------------------------
3.文件上传的后台如何编写以及注意事项:
1.肯定需要用到Servlet (Servlet怎么写依然怎么写)
2.在类名的上面在加一个额外的注解:@MultipartConfig 表示该Servlet支持处理文件上传
3.需要接受文件 通过req.getPart("前台的文件的name值");
普通数据通过req.getParameter("前台的组件的name值")
文件类型数据通过req.getPart("xxx");
4.获取文件的相关信息
通过第三步的Part part = req.getPart("xxx");
来获取相关信息
System.out.println(part.getContentType());//获取文件的类型
System.out.println(part.getSize());//获取文件的大小 单位是字节
System.out.println(part.getSubmittedFileName());//获取文件名
5.保存用户上传的文件
开始将用户上传的文件保存在本地服务器(本地的一个路径)
声明一个文件的保存路径
组装一下 需要将路径和文件名进行拼接
String path = "D:\\uploadTest\\" + part.getSubmittedFileName();
将part对象保存到path路径中 part.write(path);