码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 谷粒商城 (十六) --------- 商品服务 API 品牌管理 ② OSS 云存储开通整合


    目录

    • 前言
    • 一、云存储开通与使用
    • 二、阿里云对象存储上传方式
    • 三、OSS 整合测试
    • 四、SpringCloudAlibaba OSS


    前言

    关于文件上传,下图表示普通上传和分布式上传

    在这里插入图片描述


    一、云存储开通与使用

    开通云存储

    在这里插入图片描述
    在这里插入图片描述
    使用云存储

    查看其 API 文档

    在这里插入图片描述

    创建 Bucket

    在这里插入图片描述
    可以通过此处来上传文件

    在这里插入图片描述
    上传的文件有一个 URL 进行直接访问

    在这里插入图片描述

    二、阿里云对象存储上传方式

    A、普通上传

    在这里插入图片描述
    B、服务端签名后直传

    在这里插入图片描述
    我们采用第二种方式。。。。效率更高

    三、OSS 整合测试

    A、安装 SDK

    <dependency>
    	<groupId>com.aliyun.ossgroupId>
    	<artifactId>aliyun-sdk-ossartifactId>
    	<version>3.15.0version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    B、阿里云创建 RAM 子用户并赋予权限

    在这里插入图片描述

    在这里插入图片描述
    C、测试文件存储

    @Test
    public void testUpload() {
    	String endpoint = "https://oss-cn-qingdao.aliyuncs.com";
    	// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
    	String accessKeyId = "...";
    	String accessKeySecret = "...";
    	// 填写Bucket名称,例如examplebucket。
    	String bucketName = "gulimall-hello--fancy";
    	// 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
    	String objectName = "hh.jpg";
    	// 填写本地文件的完整路径,例如D:\\localpath\\examplefile.txt。
    	// 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
    	String filePath= "E:\\pic\\0d40c24b264aa511.jpg";
    
    	// 创建OSSClient实例。
    	OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    
    	try {
    		InputStream inputStream = new FileInputStream(filePath);
    		// 创建PutObject请求。
    		ossClient.putObject(bucketName, objectName, inputStream);
    	} catch (OSSException oe) {
    		System.out.println("Caught an OSSException, which means your request made it to OSS, "
    				+ "but was rejected with an error response for some reason.");
    		System.out.println("Error Message:" + oe.getErrorMessage());
    		System.out.println("Error Code:" + oe.getErrorCode());
    		System.out.println("Request ID:" + oe.getRequestId());
    		System.out.println("Host ID:" + oe.getHostId());
    	} catch (ClientException ce) {
    		System.out.println("Caught an ClientException, which means the client encountered "
    				+ "a serious internal problem while trying to communicate with OSS, "
    				+ "such as not being able to access the network.");
    		System.out.println("Error Message:" + ce.getMessage());
    	} catch (FileNotFoundException e) {
    		throw new RuntimeException(e);
    	} finally {
    		if (ossClient != null) {
    			ossClient.shutdown();
    		}
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    在这里插入图片描述
    在这里插入图片描述

    四、SpringCloudAlibaba OSS

    原生的SDK有点过于麻烦,这里我们直接使用 SpringCloud Alibaba 对象存储

    A、在 common 工具类中加入依赖

    <dependency>
        <groupId>com.alibaba.cloudgroupId>
        <artifactId>spring-cloud-starter-alicloud-ossartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4

    B、product 服务中进行配置

    在这里插入图片描述

    C、编写文件上传代码就不用再进行相关配置了

    在这里插入图片描述

    注意:若运行此方法报空指针异常在类上加上 @RunWith(SpringRunner.class)

  • 相关阅读:
    剑指offer——JZ32 从上往下打印二叉树 解题思路与具体代码【C++】
    Windows 下 Qt 可执行程序添加默认管理员权限启动(QMAKE、MinGW & MSVC)
    算法复杂度这一篇就够了
    介绍 TensorFlow 的基本概念和使用场景。
    LeetCode刷题记录01
    JS逆向 Frida - 夜神模拟器安装配置 基本使用
    计算机毕业设计springboot交互式大学英语学习平台g9223源码+系统+程序+lw文档+部署
    若依微服务如何处理Long类型精度丢失问题?
    考研复习之数据结构笔记(十四)查找(中)(动态查找树表:二叉排序树、平衡二叉树、B树、B+树)
    redis持久化储存(RDB、AOF)和主从复制
  • 原文地址:https://blog.csdn.net/m0_51111980/article/details/126740808
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号