学习笔记:黑马程序员JavaWeb开发教程(2025.3.24)
11.2 案例-文件上传-简介
火狐浏览器可以看到文件上传传递的底层数据,而chrome对这一块数据进行了包装
在输出日志代码处打了一个断点,看服务端接收到的数据,在上传文件的保存地址中,可以看到,有三个临时文件(.tmp),分别对应三个提交的表单项。放行之后,再看,三个临时文件不见了,只要文件上传请求响应完毕之后,临时文件会被自动删除,所以除了上传文件,还需要保存文件
11.3 案例-文件上传-本地存储
存储分为本地存储和云存储。本地存储可以使用MultipartFile这个api中的方法.transferTo方法来实现;原始文件名获取使用.getOriginalFilename。其中会抛出异常,直接在方法参数处抛出异常throws Exception就可以了
通过postman完成文件上传,网址正常写,但是选择Body中的from-data,在下面指定表单项的内容
代码优化,上传同名文件时,会被覆盖,问题在于是使用原始文件名直接存储的,为了保证不被覆盖,应该构造唯一的文件名,采用uuid解决。Uuid:通用唯一识别码,长度固定的字符串,不会重复;使用UUID.randomUUID()方法来生成,使用UUID.randomUUID().toString()来获取到UUID的字符串。构造新的文件名还需要扩展名,所以要在得到的UUID后面加上扩展名