文件上传阿里云OSS
spring boot + mybatis-plus
pom.xml 导包
<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version> </dependency> <!-- 阿里云 对象存储--> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.15.0</version> </dependency>
.yml 配置
servlet: multipart: max-request-size: 100MB mvc: pathmatch: matching-strategy: ant_path_matcher
上传文件的工具类
public class AliOssUtil { //存储空间所在的城市域名 public static final String endpoint = "oss-cn-beijing.aliyuncs.com"; //账号的key -保密 public static final String accessKeyId = "LTAI5t5ZPUfK5nTEUPCwzSxP"; //账号的密钥 -保密 public static final String accessKeySecret = "BdWzLO0B8Z7YhzBK3Hx2CvQJudyo32"; //存储空间名 public static final String bucketName = "Java2022"; //阿里云 Oss的客户端对象 private static OSS client; static { // 完成实例化 client = new OSSClientBuilder().build(endpoint,accessKeyId,accessKeySecret); } /** * @Description: 上传资源,新增文件 * @param: [fileName 上传的文件名, data 文件内容, date 访问地址的有效期] * @return: 返回 访问地址 */ public static String upload(String fileName, byte[] data, Date date){ // 上传文件内容 client.putObject(bucketName,fileName,new ByteArrayInputStream(data)); // 返回访问地址 return getUrl(fileName,date); } /** * @Description: 获取对象的访问地址 * @param: [fileName 文件名, date 访问地址的有效期] * @return: java.lang.String */ public static String getUrl(String fileName,Date date){ return client.generatePresignedUrl(bucketName,fileName,date).toString(); } /** * @Description: 验证对象是否存在 * @param: [fileName 文件名] * @return: boolean */ public static boolean exists(String fileName){ return client.doesObjectExist(bucketName,fileName); } /** * @Description: 删除文件 * @param: [fileName 文件名] * @return: boolean */ public static boolean delete(String fileName){ try { client.deleteObject(bucketName,fileName); return true; }catch (Exception e){ return false; } } }
控制器写法
@PostMapping("/uploadOss.do") public String uploadOss(@RequestPart MultipartFile file) throws IOException { // 验证文件是否为空 if (!file.isEmpty()){ // 获取文件名 String fn = file.getOriginalFilename(); // 获取文件内容 byte[] data = file.getBytes(); // 存储文件到阿里云的OSS服务器 Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.YEAR,10); String url = AliOssUtil.upload(fn, data, calendar.getTime()); return url; }else { return "文件为空!!!"; } }