使用java代码把文件上传到阿里云对象存储OSS

使用java代码把文件上传到阿里云对象存储OSS

一、创建对象存储OSS

为了解决海量数据存储与弹性扩容,项目中我们采用云存储的解决方案- 阿里云OSS。
1.开通“对象存储OSS”服务
(1)申请阿里云账号
(2)实名认证
(3)开通“对象存储OSS”服务
(4)进入管理控制台
2.创建Bucket
具体步骤
然后退出点击Acess Key 设置访问连接
在这里插入图片描述
添加完成后会出现如下信息
:AccessKey ID
:AccessKey Secret
在这里插入图片描述

如何使用

这点可以在阿里云帮助文档中找到:
1.创建maven项目引入如依赖

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

然后在代码中调用

 
    @Override
    public String uploadFileAvatar(MultipartFile file) {

        // Endpoint以杭州为例,其它Region请按实际情况填写。
        String endpoint = ConstantPropertiesUtils.END_POINT;
// 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建。
        String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
        String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
        String bucketName = ConstantPropertiesUtils.BUCKET_NAME;

        try {
// 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 上传文件流。
            InputStream inputStream = file.getInputStream();

//获取文件名称
            String fileName = file.getOriginalFilename();
//            文件名称添加随机唯一值
            String uuid = UUID.randomUUID().toString().replaceAll("-", "");
            fileName=uuid+fileName;
//             把文件按照日期分类
            String dataPath = new DateTime().toString("yyyy/MMM/dd");
            fileName = dataPath+"/"+fileName;
//调用oss方法实现上传
            //第一个参数 Bucket名称
            //第二个参数 上传到oss文件路径和文件名称
            ossClient.putObject(bucketName, fileName, inputStream);
// 关闭OSSClient。
            ossClient.shutdown();
//获取上传路径并返回
            String url = "https://"+bucketName+"."+endpoint+"/"+fileName;
            return url;
            //文件默认不能大于1048576 bytes
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }


    }

附加错误信息

如果创建maven时运行启动类时出现如下错误:
在这里插入图片描述
这是没有找到数据库配置信息。
解决方案:
在启动类上加上(exclude = DataSourceAutoConfiguration.class)

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)```


版权声明:本文为Cui6023056原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。