SpringBoot实现阿里云Oss对象上传文件

1.前往阿里云官网,开通OSS服务

2.进入OSS管理控制台/概览

3.在右侧菜单栏,找到 创建 Bucket选项

4.Bucket名称(重要),这个是关联到后面配置文件的BucketName

5.地域名称(重要)就是上传文件处理的服务器。这个关联到后面的EndPoint

6.读写权限选择公共读,其他选择默认即可,点击确定完成创建

7.创建完成后即可在对象存储/Bucket列表发现,刚刚创建的Bucket

SpringBoot实现阿里云Oss对象上传文件_第1张图片

8.创建完成后,在右上角头像栏找到AccessKey管理

9.点击 创建AccessKey,身份验证后,即可获取到KeyId和KeySercret(重要)

10.都到这步了,准备工作算是做完了。

11.引入aliyun-oss  的Maven依赖

		
			com.aliyun.oss
			aliyun-sdk-oss
			3.10.2
		

12.在SpringBoot配置类application.properties文件中,添加oss配置信息(示例)

        注意事项:1.等号右侧不能存在空格!!!  2.每个赋值的末尾不能有空格

   
    aliyun.oss.file.bucketname=first-reser

    spring.oss.file.endpoint=oss-cn-hangzhou.aliyuncs.com  

    spring.oss.file.keyid=LTAI5tPEh3AFP9VLdffjlsfj

    spring.oss.file.keysecret=BHueXyrTCpIOyZhadajd

13.新建一类工具类(ConstantPropertiesUtils),获取上述配置中的值

//当项目自己启动的时候 ,spring接口 ,spring加载之后,执行接口的一个方法
@Component
public class ConstantPropertiesUtils implements InitializingBean{
	
	//读取配置文件内容
	
	@Value("${spring.oss.file.endpoint}")
	private String endpoint;
	
	@Value("${spring.oss.file.keyid}")
	private String keyId;
	
	@Value("${spring.oss.file.keysecret}")
	private String keySercret;
	
	@Value("${aliyun.oss.file.bucketname}")
	private String bucketName;
	
	//定义公开的静态常量
	public static String END_POINT;
	public static String ACCESS_KEY_ID;
	public static String ACCESS_KEY_SECRET;
	public static String BUCKET_NAME;
	
	//每当加载完配置文件    对公开的静态变量进行赋值
	@Override
	public void afterPropertiesSet() throws Exception {
		END_POINT = endpoint;
		ACCESS_KEY_ID = keyId;
		ACCESS_KEY_SECRET = keySercret;
		BUCKET_NAME = bucketName;
	}

}

14.编写上传文件的接口

@RestController
@RequestMapping("/oss/fileUpload")
public class OssFileUploadController {
	
	@Autowired
	private OssService ossService;
	
	@PostMapping
	public Result uploadOssFile(MultipartFile file){
		
		//返回上传到oss  的路径  实现回显
		String url = ossService.uploadToOss(file);
		return Result.success("上传成功",url);
	}
	

}

15.编写上传文件的业务类(返回文件的访问路径)


	public String uploadToOss(MultipartFile file) {

		String endpoint = ConstantPropertiesUtils.END_POINT;
		String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
		String accessKeySercret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
		String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
		
		try {
			//创建oss实例  这里注意引入oss 的版本   我这里使用的是3.10.2
			OSS ossClient = new OSSClientBuilder().build(endpoint,accessKeyId,accessKeySercret);
			
			//这里需要一个文件的输入流
			InputStream inputStream = file.getInputStream();
			//获取文件原始名称
			String fileName = file.getOriginalFilename();
			
			//在文件名称种  添加随机唯一的值
			String uuid = UUID.randomUUID().toString();
			fileName = uuid + fileName;
			
			//添加文件的日期路径   例如  2019/3/3/ew553301.jpg
			Date date =new Date();
			SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
			String datePath = dateFormat.format(date);

			fileName = datePath + "/" + fileName;
			//调用oss方法实现 上传  
			//第一个参数  bucketName
			//第二个参数  上传的文件路径和名称
			//第三个  上传文件的输入流
			ossClient.putObject(bucketName,fileName,inputStream);
			
			//关闭ossClient
			ossClient.shutdown();
			
			//把上传的文件 路径 返回
			String url = "https://"+bucketName+"."+endpoint+"/"+fileName;
			
			return url;
			
		}catch(Exception e){
			e.printStackTrace();
			return null;
		}
	
	}

16.前端请求文件上传接口

           

17.测试,上传文件后即可在 Bucket列表文件管理 中看到根据日期分类好的图片文件(完成)

SpringBoot实现阿里云Oss对象上传文件_第2张图片

 

你可能感兴趣的:(spring,boot)