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

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

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

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

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

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

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

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

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

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

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

11.引入aliyun-oss  的Maven依赖

		<dependency>
			<groupId>com.aliyun.oss</groupId>
			<artifactId>aliyun-sdk-oss</artifactId>
			<version>3.10.2</version>
		</dependency>

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.前端请求文件上传接口

          <el-upload
            action="http://localhost:8888/oss/fileUpload"
            :show-file-list="false"
            :on-success="handleAvatarSuccess"
            :on-change="onChange"
          > </el-upload>

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

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值