本地存储
@Slf4j
@RestController
public class UploadController {
@PostMapping("/upload")
public Result upload(String username, Integer age, MultipartFile image) throws IOException { //在最后一个是用来接收文件的
log.info("文件上传 :{},{},{}",username,age,image);
//获取原始文件名
String originalFilename=image.getOriginalFilename();
//使用原始文件名缺点:如果有两张一样名字的文件名,后面上传的就会覆盖前面上传的,所以需要让每个文件名都是唯一的
//构造唯一的文件名(不能重复)--uuid(通用唯一识别码)
int index=originalFilename.lastIndexOf(".");//获取扩展名
String extname=originalFilename.substring(index);
String newFileName= UUID.randomUUID().toString()+extname;
log.info("新的文件名:{}",newFileName);
//将文件存储在服务器的磁盘目录中 E:\images
image.transferTo(new File("E:\\images\\" + newFileName));
return Result.success();
}
UUID
避免文件名重复覆盖文件的情况
生成她的示例代码:
@Test
public void testUuid(){
for (int i = 0; i < 100; i++) {
String uuid=UUID.randomUUID().toString();
System.out.println(uuid);
}
文件过大
阿里云OSS
阿里云对象存储服务(Object Storage Service,简称OSS)为您提供基于网络的数据存取服务。使用OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种非结构化数据文件。 阿里云OSS将数据文件以对象(object)的形式上传到存储空间(bucket)中。
您可以进行以下操作:
-
创建一个或者多个存储空间,向每个存储空间中添加一个或多个文件。
-
通过获取已上传文件的地址进行文件的分享和下载。
-
通过修改存储空间或文件的属性或元信息来设置相应的访问权限。
-
在阿里云管理控制台执行基本和高级OSS任务。
-
使用阿里云开发工具包或直接在应用程序中进行RESTful API调用执行基本和高级OSS任务
SDK:软件开发工具包,包括辅助软件开发包的依赖(jar)包,代码示例等。