从0搭建你的免费图床(PicGo + Oracle cloud 甲骨文云对象存储)

上一篇,给大家分享了:

一天时间,搭了个专属知识库,终于上线了

全文较长,涉及到的技术点和工具比较多,有个问题没说清楚:
既然选择了甲骨文云的对象存储作为图床,如何配合 PicGO 使用呢?

本文作为上一篇的补充,继续和大家分享一个免费图床的实现方式:PicGo + Oracle cloud 对象存储。

全程依然干货满满,希望给有类似需求的小伙伴一点帮助~

1. Oracle cloud 对象存储

1.1 存储桶申请

Oracle cloud 对象存储的免费空间有 20 G,每月限制 50000次 API 调用,对于个人开发者足够使用了。

接下来手把手带大家申请一块 存储桶

在控制台左上角的导航菜单中,找到存储,然后选择对象存储。

进来后,点击创建存储桶,名称默认以时间命名,你可以换一个方便自己记忆的,莫瑞诺存储层选标准就行,因为 标准 和 归档 共同组成你的 20G 免费空间。

进来后,在编辑可见性这里,需要把桶设置为公共的,这样你上传的图像才可以被访问。

1.2 客户端上传下载

下面就是在 web 端手动操作上传、下载等功能,上传速度非常快,而且同名文件会自动替换。就这一点,比 GitHub 图床可强太多了。

每张图片的后面三个点,点击即可查看图片详细信息,包括 url 等。国内访问速度也还 OK 的,部分有延时。

客户端手动操作,对于开发者来说,显然是不能接受的,有没有 API 可调用?

接着往下看👇

1.3 Amazon s3 API

甲骨文云官方提供了 Object Storage API,不过这个 API 用起来特别麻烦,而且我们接下来还需要和 PicGo 配合,实现自动上传。

这时,我们需要用到 Amazon s3 API,甲骨文云官方贴心地为 Amazon s3 API 提供了兼容。详情可参考官方文档:Object Storage Amazon S3 Compatibility API

Amazon S3 API 是啥?

Amazon Simple Storage Service (S3) 是 Amazon 提供的对象存储服务,Amazon S3 API 就是和 S3 交互的 API。因为它支持使用 RESTful API直接通过 HTTP 请求访问 Amazon S3,所以在业界使用比较广泛。

而要使用 Amazon S3 API,首先需要获取到用于身份验证的 AccessKeyId 和 SecretAccessKey。

这个在 Oracle cloud 哪里获取?

1.3.1 Oracle cloud 密钥获取

登录Oracle Cloud后,点击右上角头像,依次点击 我的概要信息-客户密钥-生成密钥。

点击生成密钥,记得立即复制出来,这个就是 SecretAccessKey,否则后续就拿不到了。然后点击访问密钥下方的字符串,这个就是 AccessKeyId

这两个东西是用于后续身份验证的,一定要保存好。

1.3.2 对象存储基本信息获取

回到你的对象存储页面,上面就是你的桶名称,名称空间需要保存下来,记作 {object-storage-namespace}

接下来通过如下拼接方式,得到请求的节点Endpoint

https://{object-storage-namespace}.compat.objectstorage.{region}.oraclecloud.com

{region}是你的主区域代码,怎么获取?

点击一张你上传图像的详细信息,在 url 中可以看到,比如我的就是 ap-singapore-1

有了这些东西后,我们就可以前往 PicoGo 配置 S3 插件了。

不过在此之前,我还有一个需求:能否在应用中批量化处理所有本地图片?

接下来,我们一起去探索下如何实现 s3 API 的本地调用。

1.3.3 s3 API 调用

因为 s3 API支持 RESTful API,自然可以用 Python 调用,看了一圈它的鉴权方式,直接把我劝退了,不同请求类型的 Authorization 都不一样,感兴趣的可以从这篇博客了解更多:Amazon S3 REST API 详解.

好在已经有 SDK 把上述过程封装好了,这个宝藏 SDK 叫 boto3,你只需要一键安装:

pip install boto3

使用也非常简单,我把常见的功能给大家梳理下。

首先,需要初始化一个 client:

import os
import boto3
from botocore.client import Config

def init_s3(end_point, access_key, secret_key, region_name='ap-singapore-1'):
	return boto3.client(
		's3',
		aws_access_key_id=access_key,
		aws_secret_access_key=secret_key,
		use_ssl=True,
		region_name=region_name,
		endpoint_url=end_point,
		config=Config(s3={"addressing_style": "path"})
	)

然后,直接调用这个 client 做任何想做的:

s3_endpoint = "https://{object-storage-namespace}.compat.objectstorage.{region}.oraclecloud.com" # 换成你自己的
    s3_access_key = "xxx" # 换成你自己的
    s3_secret_key = "xxx" # 换成你自己的
    region_name = 'ap-singapore-1' # 换成你自己的
    s3 = init_s3(s3_endpoint, s3_access_key, s3_secret_key, region_name)
    
    # 列出所有bucket
    buckets = s3.list_buckets()['Buckets']
    
    bucket_name = 'bucket-xxx'
    # 列出所有文件
    objects = s3.list_objects(Bucket=bucket_name)['Contents']
    for obj in objects[:3]:
        print(obj['Key'])
    
    # 下载文件
    response = s3.get_object(Bucket=bucket_name, Key='xxx.png')
    if response['ResponseMetadata']['HTTPStatusCode'] == 200:
        response_content = response['Body'].read()
        with open('test.png', 'wb') as f:
            f.write(response_content)
    
    # 上传文件
    file_name = r"D:\data\xx.png"
    response = s3.put_object(Bucket=bucket_name, Key=os.path.basename(file_name), Body=open(file_name, 'rb'))
    if response['ResponseMetadata']['HTTPStatusCode'] == 200:
        print("Upload file successfully!")

2. PicGo 插件安装和使用

2.1 S3 插件

参考上篇教程,相信你已经完成了 PicGo 的安装。接下来我们在插件设置,搜索框中输入 s3,下图中装第一个就行:

安装成功后,在图床设置中就可以看到 Amazon S3 的图床,设置参考下图:

具体的字段说明如下:

  • 应用密钥ID:就是上面获取的 AccessKeyId
  • 应用密钥:就是上面获取的 SecretAccessKey
  • 桶名:你创建的桶名称
  • 文件路径:你怎么定义存储桶中的上传路径,下面详细说明
  • 地区:就是上面获取的 {region}
  • 自定义节点:就是上面拼接得到的节点 Endpoint

文件路径支持的 payload与描述如下,可按需配置,因为我希望同名文件直接覆盖,所以选用了 {fullName}

!注意ForcePathStyle 必须设置为 yes,否则上传时使用的自定义节点会在输入的节点前自动加上桶名,导致上传失败。

至此,Amazon S3 的图床的配置就基本完成了,快去上传区上传一张图片试试吧~

上传成功后,得到的 url 格式如下:

https://{object-storage-namespace}.compat.objectstorage.{region}.oraclecloud.com/{bucket}/{img_name}.png 

2.2 squoosh 图片压缩插件

贴心提示:如果你每次都是截图上传图片,由于现在的截图软件默认保存的都是 png 图片,导致图片占用存储空间不小,而且图片太大的话也会影响网络加载速度。

所以,如果你不想 20G 免费空间很快爆满的话,最好安装一个图片压缩插件。

操作也很简单,在插件设置,搜索框中输入 squoosh,装上就行~

初次使用,需要进行配置:

我这里并不打算采用 md5 重命名,所以只把下面相应扩展名的图片压缩打开了。

记得点击下方的 确定 进行保存哦,否则配置不会生效的。

写在最后

至此,一个免费又好用的图床就搭建好了,本文的所有图片上传也是 PicGo + Oracle cloud 对象存储 + S3 API实现的。

有了这个图床,以后写文章方便多了!

整个过程虽然略显复杂,但跟着文章一步步实操,相信你也能轻松搞定!有什么问题欢迎留言哦~

如果本文对你有帮助,不妨点个免费的赞收藏备用。你的支持是我创作的最大动力。

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值