IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Java使用阿里云OSS实现文件的上传 -> 正文阅读

[大数据]Java使用阿里云OSS实现文件的上传

作者:recommend-item-box type_blog clearfix

开通阿里云oss服务

阿里云官网:https://www.aliyun.com/

选择OSS系统

在这里插入图片描述

开通服务

在这里插入图片描述

充值

充值一元就够个人使用很长时间了
在这里插入图片描述

创建bucket

在这里插入图片描述

  • 选择:添加名称、标准存储、公共读、不开通
    在这里插入图片描述
  • 查看生成的id和秘钥
    在这里插入图片描述
    在这里插入图片描述

查看sdk的使用

帮助文档:https://help.aliyun.com/document_detail/32006.html
在这里插入图片描述

项目演示

pom

    <dependencies>
        <!--阿里云-->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
        </dependency>
        <!--日期工具栏-->
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
        </dependency>
    </dependencies>

properties

#端口号
server.port=8082
#服务名称
spring.application.name=service_oss
#开发环境
spring.profiles.active=dev
#oss的网址、id、秘钥
aliyun.oss.file.endpoint=你的公开的endpoint
aliyun.oss.file.keyid=你的keiId
aliyun.oss.file.keysecret=keyId对应的secret
#buket名称
aliyun.oss.file.bucketname=创建时的bucketname
#nacos地址
spring.cloud.nacos.discovery.server-addr=localhost:8848
#项目名称
project.name=cinema-online

主启动类

/**
 * @author : Abo
 * @date : 2022/1/23 19:37
 */
// 不需要加载项目的数据源
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@EnableDiscoveryClient
@EnableSwagger2
public class OssApplication {
    public static void main(String[] args) {
        SpringApplication.run(OssApplication.class, args);
    }
}

初始化工具类

/**
 * @author : Abo
 * @date : 2022/1/23 19:39
 */
// 启动时自动读取
@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 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 = keySecret;
        BUCKET_NAME = bucketName;
    }
}

service层

/**
 * @author : Abo
 * @date : 2022/1/23 19:42
 */
@Service
public class OssServiceImpl implements OssService {

    @Value("${project.name}")
    private String projectName;

    /**
     * 图片上传
     */
    @Override
    public ResponseResult uploadFileAvatar(MultipartFile file) {
        // 通过工具类获取配置数据
        String endPoint = ConstantPropertiesUtils.END_POINT;
        String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
        String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
        String bucketName = ConstantPropertiesUtils.BUCKET_NAME;

        // 完成上传
        try {
            // 获取上传的输入流
            InputStream inputStream = file.getInputStream();
            // 防止恶意程序伪装成图片
            BufferedImage image = ImageIO.read(inputStream);
            if (image == null || image.getWidth() == 0 || image.getHeight() == 0) {
                return ResponseResult.error().message("请上传符合规范的图片");
            }

            // 获取文件名称
            String filename = file.getOriginalFilename();

            // 为文件设定唯一名称
           /* 数字类型
            CRC32 crc32 = new CRC32();
            crc32.update(UUID.randomUUID().toString().getBytes());*/
            filename = UUID.randomUUID().toString().replaceAll("-", "") + filename;
            // 按照年月日创建上传的目录存放图片
            String datePath = new DateTime().toString("yyyy/MM/dd");
            filename = projectName + "/" + datePath + "/" + filename;

            /*
             * 调用oss实现上传
             * 第一个参数  bucket名称
             * 第二个参数  文件名称
             * 第三个参数  输入流
             */
            OSS ossClient = new OSSClientBuilder().build(endPoint, accessKeyId, accessKeySecret);
            ossClient.putObject(bucketName, filename, inputStream);
            ossClient.shutdown();
            String url = "https://" + bucketName + "." + endPoint + "/" + filename;
            return ResponseResult.success().data("url", url);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

controller层

/**
 * @author : Abo
 * @date : 2022/1/23 19:59
 */
@RestController
@RequestMapping("/oss/")
public class OssController {
    @Autowired
    private OssService ossService;

    @ApiOperation("图片上传")
    @PostMapping("upload")
    public ResponseResult uploadOssFile(MultipartFile file) {
         return ossService.uploadFileAvatar(file);
    }
}
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章           查看所有文章
加:2022-01-24 10:57:59  更:2022-01-24 11:00:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/18 22:26:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码