1.本地上传
本地上传代码如下
//本地上传
@PostMapping
public void post(String username, Integer age, MultipartFile image) throws IOException {
String originalFilename = image.getOriginalFilename();
UUID uuid = UUID.randomUUID();
int index = originalFilename.lastIndexOf(".");
String substring = originalFilename.substring(index);
String lastname=uuid+substring;
image.transferTo(new File("D:\\work\\tupian\\"+lastname));
}
1.后端接收文件要用 MultipartFile 类型接收,且形参名称要与前端发送的文件名称相同。
2.image.getOriginalFilename();此段代码用于获取文件的原始文件名。
3.UUID.randomUUID();获取一段不会重复的字符串,保证文件名称不会重复
4.int index = originalFilename.lastIndexOf(".");将一个文件名称按照最后一个小数点分割开,返回的是int型。例如文件名称image.jpg,返回值index为4,指的是 .jpg 4个 。
5.String substring = originalFilename.substring(index);配合lastindexof函数的返回值,得到的就是 .jpg 4个字母。
6. MultipartFile封装好的transferTo函数可以将文件存放在指定目录。
2.阿里云对象存储服务OSS
步骤:
1.导入依赖
网址如下:安装OSS Java SDK_对象存储(OSS)-阿里云帮助中心 (aliyun.com)
2.本文仅展示文件的简单上传,参考文档网址如下:
如何使用JavaSDK简单上传文件_对象存储(OSS)-阿里云帮助中心 (aliyun.com)
我自己写的阿里云oss类如下,调用upload即可上传文件到阿里云:
@Component
public class AliOSSUtils {
//地域结点,此为北京
private String endpoint = "https://oss-cn-beijing.aliyuncs.com";
private String accessKeyId = "accessid";
private String accessKeySecret = "access密钥";
private String bucketName = "此为自己的bucket名称";
/**
* 实现上传图片到OSS
*/
public String upload(MultipartFile file) throws IOException {
// 获取上传的文件的输入流
InputStream inputStream = file.getInputStream();
// 避免文件覆盖
String originalFilename = file.getOriginalFilename();
String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));
//上传文件到 OSS
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
ossClient.putObject(bucketName, fileName, inputStream);
//文件访问路径
String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;
// 关闭ossClient
ossClient.shutdown();
return url;// 把上传到oss的路径返回
}
}
ps:当配置类中定义好了属性时,自定义配置文件没有提示,可以加上如下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>