- 先在阿里云AccessKey 管理中获取用户的AccessKey ID和AccessKey Secret
- 创建Bucket空间
- 安装阿里云对象存储oss依赖包
<!--阿里云oss--> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.10.2</version> </dependency>
- 在application.yml配置文件中配置参数(我使用的是.yml文件格式)
-
在ConstantPropertiesUtil中获取配置文件参数
package 包路径; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; /** * 阿里云对象存储信息 */ @Component @PropertySource("classpath:application.yml") public class ConstantPropertiesUtil implements InitializingBean { @Value("${aliyun.oss.file.endpoint}") private String endpoint; @Value("${aliyun.oss.file.keyid}") private String keyId; @Value("${aliyun.oss.file.keysecret}") private String keysecret; @Value("${aliyun.oss.file.bucketname}") private String bucketname; //定义公开静态常量 public static String END_POIND; public static String ACCESS_KEY_ID; public static String ACCESS_KEY_SECRET; public static String BUCKET_NAME; @Override public void afterPropertiesSet() throws Exception { END_POIND = endpoint; ACCESS_KEY_ID = keyId; ACCESS_KEY_SECRET = keysecret; BUCKET_NAME = bucketname; } }
- 创建相应的service接口和实现类
package 包路径; import org.springframework.web.multipart.MultipartFile; public interface OssService { //上传头像图片到oss String uploadFileAvatar(MultipartFile file); }
实现类:
package 包路径; import com.rwlok.service.OssService; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.rwlok.utils.ConstantPropertiesUtil; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.InputStream; import java.util.UUID; @Service public class OssServiceImpl implements OssService { //上传头像 @Override public String uploadFileAvatar(MultipartFile file) { // 工具类获取值 String endpoint = ConstantPropertiesUtil.END_POIND; String accessKeyId = ConstantPropertiesUtil.ACCESS_KEY_ID; String accessKeySecret = ConstantPropertiesUtil.ACCESS_KEY_SECRET; String bucketName = ConstantPropertiesUtil.BUCKET_NAME; String catalogue = "avatar";//目录 try { // 创建OSS实例。 OSS ossClient = new OSSClientBuilder().build(endpoint,accessKeyId,accessKeySecret); //获取上传文件输入流 InputStream inputStream = file.getInputStream(); //获取文件名称 String fileName = file.getOriginalFilename(); //1 在文件名称里面添加随机唯一的值 String uuid = UUID.randomUUID().toString().replaceAll("-",""); // yuy76t5rew01.jpg fileName = uuid+fileName; //拼接 // 2019/11/12/ewtqr313401.jpg fileName = catalogue+"/"+fileName; //调用oss方法实现上传 //第一个参数 Bucket名称 //第二个参数 上传到oss文件路径和文件名称 aa/bb/1.jpg //第三个参数 上传文件输入流 ossClient.putObject(bucketName,fileName , inputStream); // 关闭OSSClient。 ossClient.shutdown(); //把上传之后文件路径返回 //需要把上传到阿里云oss路径手动拼接出来 // https://edu-guli-1010.oss-cn-beijing.aliyuncs.com/01.jpg String url = "https://"+bucketName+"."+endpoint+"/"+fileName; return url; }catch(Exception e) { e.printStackTrace(); return null; } } }
- 在控制类中调用实现类中的方法
import com.rwlok.service.OssService; import com.rwlok.utils.ErrorCode; import com.rwlok.utils.Result; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @RestController @RequestMapping("/uploadfileoss") @Api(tags = "上传图片") @CrossOrigin public class OssController { @Autowired private OssService ossService; //上传头像的方法 @PostMapping("/avatar") @ApiOperation(value = "上传头像") public Result uploadAvatarOssFile(MultipartFile file) { //获取上传文件 MultipartFile //返回上传到oss的路径 String url = ossService.uploadFileAvatar(file); if (StringUtils.isBlank(url)){ return Result.error(ErrorCode.UPLOADIND_ERROR.getCode(), ErrorCode.UPLOADIND_ERROR.getMsg()); } return Result.success(url); } }
- 启动项目,查看结果