个人介绍微电影网站模板,dw做网站首页怎么做,网站定制合同和模版的区别,北京建设工程交易网欢迎来到“雪碧聊技术”CSDN博客#xff01; 在这里#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者#xff0c;还是具有一定经验的开发者#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导#xff0c;我将… 欢迎来到“雪碧聊技术”CSDN博客 在这里您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者还是具有一定经验的开发者相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导我将不断探索Java的深邃世界分享最新的技术动态、实战经验以及项目心得。 让我们一同在Java的广阔天地中遨游携手提升技术能力共创美好未来感谢您的关注与支持期待在“雪碧聊技术”与您共同成长 目录
一、简介
1、什么是文件上传
2、文件上传需要的两部分
①前端程序
②后端程序
3、举例
4、总结
二、本地存储
1、什么是本地存储
2、初步代码
3、思考此时存在的问题
①不能以文件原始名称的形式存储
4、使用UUID来保证文件不被覆盖唯一性
①什么是UUID
②截取原始文件名的后缀并拼接上UUID构成新文件名唯一的
③测试效果
5、目前仍存在的问题
①上传文件的大小有限制
②问题的原因
③配置好以后再次上传那个2.84MB的图片看看能否成功
6、MultipartFile的方法
7、本地存储文件的缺点
结语 一、简介
1、什么是文件上传 文件上传是指将本地图片、视频、音频等文件上传到服务器供其他用户浏览或下载的过程。 举例发微博、微信朋友圈都需要用到文件上传功能。 2、文件上传需要的两部分
①前端程序
三要素
必须有一个类型为file的输入框form表单的提交方式必须是post在form表单中需要使enctype这个属性为multipart/form-data ②后端程序
使用spring提供的MultipartFile来接收传递过来的文件。
举例 3、举例 编写后端接收文件的controller 然后查看后端断点的信息 将三个文件改名为1.txt2.txt3.txt然后查看文件内容。 然后放行断点 由上面的过程可见后端接收前端传递的文件时会在Tomcat服务器生成对应的临时文件我们接下来要做的就是将这些临时文件保存下来。可以选择保存到本地也可以选择保存到阿里云OSS服务器。
4、总结 二、本地存储
1、什么是本地存储
在服务端后端接收到上传的文件后将文件存储在本地服务器磁盘中。
2、初步代码
Slf4j
RestController
public class UploadController {PostMapping(/upload)public ResultVo upload(String username, Integer age, MultipartFile image) throws IOException {log.info(文件上传{},{},{}, username, age, image);//获取原始文件名通过getOriginalFilename方法String originalFilename image.getOriginalFilename();//如1.png hello.txt//将文件存储在后端的磁盘目录中通过transferTo方法image.transferTo(new File(D:\\code\\yyzxproject\\src\\main\\resources\\static\\files\\originalFilename));return new ResultVo(200,上传成功);}
}测试效果
利用postman向后端传入一张图片 3、思考此时存在的问题
①不能以文件原始名称的形式存储
举例
我们第一次上传了一个张三的自拍照片名称为01.jpg 第二次又上传了一个李四的自拍照片名称也叫01.jpg。 此时李四的自拍就会覆盖张三的自拍这就导致少了一张照片。 产生上述图片覆盖的问题根本原因就是文件名重复了。
因此我们存储文件时要保证文件名的唯一性。
4、使用UUID来保证文件不被覆盖唯一性
①什么是UUID
UUID也称为“通用唯一识别码”就是一个长度固定36位、唯一的字符串。
UUID是Java官方提供的安装了JDK就可以使用该包。
举例
public class Test6 {public static void main(String[] args) {String uuid UUID.randomUUID().toString();System.out.println(uuid);}
}
运行结果 ②截取原始文件名的后缀并拼接上UUID构成新文件名唯一的
如01.jpg的后缀是.jpg
Slf4j
RestController
public class UploadController {PostMapping(/upload)public ResultVo upload(String username, Integer age, MultipartFile image) throws IOException {log.info(文件上传{},{},{}, username, age, image);//获取原始文件名通过getOriginalFilename方法String originalFilename image.getOriginalFilename();//如1.png hello.txt//构造唯一的文件名int index originalFilename.lastIndexOf(.);//.出现的下标String extname originalFilename.substring(index);//从.的下标截取到最后结果就是后缀名。如.jpgString newFileName UUID.randomUUID().toString() extname;//将文件存储在后端的磁盘目录中通过transferTo方法image.transferTo(new File(D:\\code\\yyzxproject\\src\\main\\resources\\static\\files\\newFileName));return new ResultVo(200,上传成功);}
}
也就是说文件名是UUID后缀还是原来的后缀。
③测试效果 5、目前仍存在的问题
①上传文件的大小有限制 我们把这个图片上传到后端查看效果 ②问题的原因
Spring限制每次上传的单个文件大小不能超过1MB。
如果想超过需要自己进行配置 举例 ③配置好以后再次上传那个2.84MB的图片看看能否成功 6、MultipartFile的方法 7、本地存储文件的缺点
前端页面无法直接访问后端的文件 举例 服务器后端磁盘的容量有限满了的时候扩容很不方便服务器后端磁盘一旦损坏存储的所有文件资源就会全部丢失 结语
以上就是本地存储文件的全部内容但这种存储方式的确不常用我们学习本篇文章是为了解MultipartFile对象以及本地存储方式的缺点。
想了解阿里云存储文件请关注本博主本专栏[JavaWeb]的下篇文章~~