阿里云OSS上传文件详细步骤

阿里云OSS删除文件详细步骤

一、阿里云oss服务开通

点击开通

二、进入控制台

点击进入

三、创建Bucket

点击进入Bucket
在这里插入图片描述

四、创建AccessKey

在这里插入图片描述

云账号 AccessKey 是您访问阿里云 API 的密钥,具有账户的完全权限
请您务必妥善保管!
不要以任何方式公开 AccessKey 到外部渠道(例如 Github)
避免被他人利用造成 安全威胁。
强烈建议您遵循 阿里云安全最佳实践
使用 RAM 用户(而不是云账号)的 AccessKey 进行 API 调用。

创建成功后先复制粘贴到一边

五、上代码

1.导入依赖

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

如果使用的是Java 9及以上的版本,则需要添加jaxb一下相关依赖。

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.3</version>
</dependency>

2.配置类application.yml

注意:folder为上传文件基目录,如果不配置,则自动在根目录创建文件夹
# 阿里云OSS
aliyun:
  oss:
    file:
      endpoint: oss-cn-beijing.aliyuncs.com # 对应公网endpoint地址
      accessKeyId: yourAccessKeyId
      accessKeySecret: yourAccessKeySecret
      bucketName: yourbucketName
	  folder: active #保存文件夹路径

3.创建一个读取配置的类

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(value = "classpath:application.yml") //指定配置文件的位置
public class AliConfig implements InitializingBean {
    /**
     * 对应公网endpoint地址
     */
    @Value("${aliyun.oss.file.endpoint}")
    private String endpoint;

    /**
     * AccessKeyId
     */
    @Value("${aliyun.oss.file.accessKeyId}")
    private String accessKeyId;

    /**
     * AccessKeySecret
     */
    @Value("${aliyun.oss.file.accessKeySecret}")
    private String accessKeySecret;

    /**
     * Bucket名称
     */
    @Value("${aliyun.oss.file.bucketName}")
    private String bucketName;
  
    /**
     * 上传文件夹路径
     */
    @Value("${aliyun.oss.file.folder}")
    private String folder;

    public static String END_POINT;
    public static String ACCESS_KEY_ID;
    public static String ACCESS_KEY_SECRET;
    public static String BUCKET_NAME;
    public static String FOLDER;

    @Override
    public void afterPropertiesSet() throws Exception {
        END_POINT = endpoint;
        ACCESS_KEY_ID = accessKeyId;
        ACCESS_KEY_SECRET = accessKeySecret;
        BUCKET_NAME = bucketName;
        FOLDER = folder;
    }
}

4.业务代码

@RestController
@RequestMapping("/upload")
public class UploadController {

    @PostMapping
    public AjaxResult uploadFile(@RequestParam("file") MultipartFile file) {
        // yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
        String endpoint = AliConfig.END_POINT;
        // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
        String accessKeyId = AliConfig.ACCESS_KEY_ID;
        String accessKeySecret = AliConfig.ACCESS_KEY_SECRET;
        String bucketName = AliConfig.BUCKET_NAME;
        String folder = AliConfig.FOLDER;
        try {
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            // 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
            InputStream inputStream = file.getInputStream();
            //获取文件真实名称
            String originalFilename = file.getOriginalFilename();
            //重命名,防止相同文件出现覆盖 
            //生成的f4f2e1a3-391a-4d5a-9438-0c9f5d27708c 需要替换成 f4f2e1a3391a4d5a94380c9f5d27708c
            String uuid = UUID.randomUUID().toString().replaceAll("-","");
            //新的文件名
            originalFilename = uuid + originalFilename;
            //2、把文件按照日期进行分类
            String datePath = new DateTime().toString("yyyy/MM/dd");
            //拼接
            originalFilename = folder + "/" + datePath + "/" + originalFilename;
            // oss实现上传文件
            ossClient.putObject(bucketName, originalFilename, inputStream);
            // 关闭OSSClient
            ossClient.shutdown();
            
            //把上传之后文件路径返回,手动拼接出来
            String url = "https://" + bucketName + "." + endpoint + "/" + originalFilename;
            return url;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}
  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tan.]der

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值