
接口 OssService:
package com.wzy.oss.service;import org.springframework.stereotype.Service;import org.springframework.web.multipart.MultipartFile;@Servicepublic interface OssService {String uploadFileAvatar(MultipartFile file);}
实现类 OssServiceImpl:
package com.wzy.oss.service.impl;import com.aliyun.oss.OSS;import com.aliyun.oss.OSSClientBuilder;import com.wzy.oss.service.OssService;import com.wzy.oss.utils.ConstanPropertiesUtils;import org.joda.time.DateTime;import org.springframework.stereotype.Service;import org.springframework.web.multipart.MultipartFile;import java.io.IOException;import java.io.InputStream;import java.util.UUID;@Servicepublic class OssServiceImpl implements OssService {/** @description 以下是长传头像的代码,根据 https://help.aliyun.com/document_detail/84781.html 中* <简单上传>中的<上传文件流>。* @author WangZiyao* @date 2021/9/20 0020 15:42* @param [org.springframework.web.multipart.support.MultipartFilter]* @return java.lang.String*/@Overridepublic String uploadFileAvatar(MultipartFile file) {//1、通过工具类 ConstanPropertiesUtils 获取对应的属性的值。String endpoint = ConstanPropertiesUtils.END_POINT;String accessKeyId = ConstanPropertiesUtils.KEY_ID;String accessKeySecret = ConstanPropertiesUtils.KEY_SECRET;String bucketName = ConstanPropertiesUtils.BUCKET_NAME;try {// 2、创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);//获取文件输入流InputStream inputStream = file.getInputStream();//与 <文件名 fileName> 拼接,构成唯一值,使上传的文件名不会因重复,从而被覆盖。String uuid = UUID.randomUUID().toString().replaceAll("-", "");//获取上传文件的名称,与 uuid 拼接构成唯一名称。String fileName = uuid + file.getOriginalFilename();//把文件按照日期进行分类//使用pom中的 joda-time 时间依赖,//获取时间,并转换为 2021/09/20 的格式String dataPath = new DateTime().toString("yyyy/MM/dd");//2021/09/20/822d4669bf51484c9e5b664ce550c8da刘亦菲.jpgfileName = dataPath + "/" + fileName;// 1、依次填写 Bucket名称(例如examplebucket):bucketName// 和Object完整路径或文件名称(例如exampledir/exampleobject.txt)。:filename// Object完整路径中不能包含Bucket名称。ossClient.putObject(bucketName, fileName, inputStream);// 关闭OSSClient。ossClient.shutdown();//返回图片路径//https://myedu1010.oss-cn-hangzhou.aliyuncs.com/射手.jpgString pictureUrl = "https://" + bucketName + "." + endpoint + "." + "/" + fileName;return pictureUrl;} catch (IOException e) {e.printStackTrace();return null;}}}
