阿里oss模拟存储用户头像

阿里oss

模拟利用OSS存储用户头像

1、使用对象存储OSS
  1. 创建Bucket在这里插入图片描述

  2. 模拟后台上传
    在这里插入图片描述

使用java操作阿里云oss
  1. 创建操作阿里云oss许可证(id和密钥)
  2. 点击右上角头像-> accesskey管理 -> 创建AccessKey获取ID,密钥
https://help.aliyun.com/document_detail/32012.html
// 引入依赖
   <dependency>
       <groupId>com.aliyun.oss</groupId>
       <artifactId>aliyun-sdk-oss</artifactId>
       <version>3.10.2</version>
   </dependency>
//设置properties
#阿里云oss
#不同服务器,地址不同
aliyun.oss.file.endpoint=oss-cn-beijing.aliyuncs.com
aliyun.oss.file.keyid=LTAI5tJFyFvVmK5pz1iLZNWF
aliyun.oss.file.keysecret=f5P1jlN9Jlqje4EpnHZum0Gv4tQufA
#可以在控制台创建,也可以使用java代码创建
aliyun.oss.file.bucketname=photo101
@Component
public class ConstantPropertiesUtils 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_POINT;
    public static String KEY_ID;
    public static String KEY_SECRET;
    public static String BUCKET_NAME;

    @Override
    public void afterPropertiesSet() throws Exception {
        END_POINT = endpoint;
        KEY_ID = keyId;
        KEY_SECRET = keySecret;
        BUCKET_NAME = bucketName;
    }

public class OssController {

    @Autowired
    private OssService ossService;

    @PostMapping("/")
    public RespBean uploadOssFile(MultipartFile file){
        // 获取上传文件 MultipartFile
        // 返回上传到OSS的路径
        String url = ossService.updateloadFileAvatar(file);

        return RespBean.success("url",url);
    }
@Service
public class OssServiceImpl implements OssService {
    /**
     * 上传头像到oss
     * @param file
     * @return
     */
    @Override
    public String updateloadFileAvatar(MultipartFile file) {

        String endpoint = ConstantPropertiesUtils.END_POINT;
        String accessKeyId = ConstantPropertiesUtils.KEY_ID;
        String accessKeySecret = ConstantPropertiesUtils.KEY_SECRET;
        String bucketName = ConstantPropertiesUtils.BUCKET_NAME;

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        String url = "";
        try {
            // 获取流
            InputStream inputStream = file.getInputStream();
            // 获取文件名称
            String filename = file.getOriginalFilename();

            //1. 在文件名称里面添加随机的唯一的值
            String uuid = UUID.randomUUID().toString().replaceAll("-","");
            filename = uuid + filename;

            //2. 把文件按照日期进行分类
            // 2022/04/04/01.jpg
            // 获取当前日期
            String datePath = new DateTime().toString("yyyy/MM/dd");

            // 拼接
            filename = datePath+"/"+filename;

            // 创建PutObject请求。
            // 第二个参数 上传到oss文件路径和文件名称  /aa/bb/1.jpg
            ossClient.putObject(bucketName, filename, inputStream);

            // 把上传之后文件路径返回
            // 需要把上传到阿里云oss路径手动拼接出来
            // https://photo101.oss-cn-beijing.aliyuncs.com/toux.webp
            url = "https://"+bucketName+"."+endpoint+"/"+filename;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
        return url;
    }
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值