
【Python Cloudflare R2 API调用】用python调用Cloudflare的R2存储桶的api接口
使用Python 操作 Cloudflare R2的API接口,上传文件,删除文件,生成下载地址,查看上传文件,断点续传
·
文章日期:2024.07.24
使用工具:Python
文章全程已做去敏处理!!! 【需要做的可联系我】
AES解密处理(直接解密即可)(crypto-js.js 标准算法):在线AES加解密工具
【注意 注意 注意】:如果你没有【Visa信用卡】【Mastercard信用卡】【Amex信用卡】【Discover信用卡】【UnionPay(银联)信用卡】【JCB信用卡】【PayPal信用卡】,如果你一样都没有,那你就不用看了,因为你没法买免费获取R2使用权。
虽然Cloudflare 里的R2是免费的,但也需要行用卡的信息去付款,0元付款,会有账单,没有信用卡就没法免费使用,永久免费使用,但也有额度,看下面的图,,,只要你不超出规定的额度,就不收费
回归正题,那么接下来我们开始操作如何使用R2存储桶
1、首先你要有一个Cloudflare的账号,其次是你已经开通了免费的R2存储桶,然后跟着我的脚步走,先来创建一个桶
2、桶的名称要谨慎填写,后期无法修改,位置填写自动,存储类的选择要看你们使用的频繁程度,看情况而定,然后点创建
3、创建好桶后,我们要创建一个【R2 API 令牌】,有了令牌才能去使用API接口,我们点击【管理R2 API 令牌】
4、点击创建
5、随便命名一下,然后选择管理员权限,权限越大,API可以操作的功能也就越多
6、创建成功后会自动跳转到这个页面,切记,这个页面不要关闭,一旦关闭就没法再次查看了,然后我们要把里面的凭证和一些密钥都记录下来,然后再关闭。(密钥将会在文章发布前删除)
7、注意事这些项
-
R2存储桶无法上传空的文件夹,文件夹内必须要有文件,如果没有文件,那么这个文件夹也将自动消失
8、【API-上传文件】
【【方法一】】
import boto3
from botocore.config import Config
# 令牌值 【令牌名称root_token】
token = 'Ux0_W3LUrInCU4-jti05KqRsOq8oOAWtnn5PJRO0'
# 你的 Cloudflare R2 访问密钥和秘密密钥
# 访问密钥 ID
access_key = '2152d032bc4ce72f045db5a4dd37316d'
# 机密访问密钥
secret_key = '159a4091914253895c323a3065cb733fc244b9f0b262b7252678c9bf22d40cae'
# 存储桶的 URL
url = 'https://52e14eaf9fc111bc2f70714d2ff607b1.r2.cloudflarestorage.com'
# 创建一个 S3 客户端,这里指定了 R2 的端点
config = Config(signature_version='s3v4')
s3_client = boto3.client(
's3',
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=url,
config=config
)
# 你要上传到存储桶的名字
bucket_name = 'data-1'
# 本地文件 文件名
file_path = 'MST.txt'
# 存储桶里的路径和文件名 此处可以重新命名上传后的文件名称,也可以添加文件夹
bucket_file_name = 'MST.txt'
# 使用 S3 客户端上传文件
s3_client.upload_file(file_path, bucket_name, bucket_file_name)
【【方法二】】
import boto3
from botocore.config import Config
# 令牌值 【令牌名称root_token】
token = 'Ux0_W3LUrInCU4-jti05KqRsOq8oOAWtnn5PJRO0'
# 你的 Cloudflare R2 访问密钥和秘密密钥
# 访问密钥 ID
access_key = '2152d032bc4ce72f045db5a4dd37316d'
# 机密访问密钥
secret_key = '159a4091914253895c323a3065cb733fc244b9f0b262b7252678c9bf22d40cae'
# 存储桶的 URL
url = 'https://52e14eaf9fc111bc2f70714d2ff607b1.r2.cloudflarestorage.com'
# 创建一个 S3 客户端,这里指定了 R2 的端点
config = Config(signature_version='s3v4')
s3_client = boto3.client(
's3',
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=url,
config=config
)
# 你要上传到存储桶的名字
bucket_name = 'data-1'
# 本地文件 文件名
file_path = 'password_1.zip'
# 存储桶里的路径和文件名 此处可以重新命名上传后的文件名称,也可以添加文件夹
bucket_file_name = 'password_1.szip'
# 打开本地文件并读取内容
with open(file_path, 'rb') as data:
# 使用 put_object 方法上传文件
# Body 参数指定了要上传的文件内容
# Key 参数指定了存储桶里的路径和文件名
# Bucket 参数指定了存储桶的名称
s3_client.put_object(Bucket=bucket_name, Key=bucket_file_name, Body=data)
9、【API-查看正在上传文件列表】
import boto3
from botocore.config import Config
# 令牌值 【令牌名称root_token】
token = 'Ux0_W3LUrInCU4-jti05KqRsOq8oOAWtnn5PJRO0'
# 你的 Cloudflare R2 访问密钥和秘密密钥
# 访问密钥 ID
access_key = '2152d032bc4ce72f045db5a4dd37316d'
# 机密访问密钥
secret_key = '159a4091914253895c323a3065cb733fc244b9f0b262b7252678c9bf22d40cae'
# 存储桶的 URL
url = 'https://52e14eaf9fc111bc2f70714d2ff607b1.r2.cloudflarestorage.com'
# 创建一个 S3 客户端,这里指定了 R2 的端点
config = Config(signature_version='s3v4')
s3_client = boto3.client(
's3',
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=url,
config=config
)
# 你要上传到存储桶的名字
bucket_name = 'data-1'
# 获取正在上传的文件列表
uploads = s3_client.list_multipart_uploads(Bucket=bucket_name)['Uploads']
for upload in uploads:
print(upload)
10、【API-批量取消上传】 如果需要取消某一个参数,请把for循环取消掉,然后手动去修改即可,过于简单我就不演示了,代码多了会导致【本文章】卡顿
import boto3
from botocore.config import Config
# 令牌值 【令牌名称root_token】
token = 'Ux0_W3LUrInCU4-jti05KqRsOq8oOAWtnn5PJRO0'
# 你的 Cloudflare R2 访问密钥和秘密密钥
# 访问密钥 ID
access_key = '2152d032bc4ce72f045db5a4dd37316d'
# 机密访问密钥
secret_key = '159a4091914253895c323a3065cb733fc244b9f0b262b7252678c9bf22d40cae'
# 存储桶的 URL
url = 'https://52e14eaf9fc111bc2f70714d2ff607b1.r2.cloudflarestorage.com'
# 创建一个 S3 客户端,这里指定了 R2 的端点
config = Config(signature_version='s3v4')
s3_client = boto3.client(
's3',
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=url,
config=config
)
# 你要上传到存储桶的名字
bucket_name = 'data-1'
# 获取正在上传的文件列表
uploads = s3_client.list_multipart_uploads(Bucket=bucket_name)['Uploads']
for upload in uploads:
print(f'正在取消上传:{upload["Key"]}')
s3_client.abort_multipart_upload(Bucket=bucket_name, Key=upload['Key'], UploadId=upload['UploadId'])
print(f'取消成功:{upload["Key"]}')
11、【API-断点续传】(研究中)问过GPT也不行,有懂的哥们可以来投稿
12、【API-删除R2桶里的文件】
import boto3
from botocore.config import Config
# 令牌值 【令牌名称root_token】
token = 'Ux0_W3LUrInCU4-jti05KqRsOq8oOAWtnn5PJRO0'
# 你的 Cloudflare R2 访问密钥和秘密密钥
# 访问密钥 ID
access_key = '2152d032bc4ce72f045db5a4dd37316d'
# 机密访问密钥
secret_key = '159a4091914253895c323a3065cb733fc244b9f0b262b7252678c9bf22d40cae'
# 存储桶的 URL
url = 'https://52e14eaf9fc111bc2f70714d2ff607b1.r2.cloudflarestorage.com'
# 创建一个 S3 客户端,这里指定了 R2 的端点
config = Config(signature_version='s3v4')
s3_client = boto3.client(
's3',
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=url,
config=config
)
# 你要上传到存储桶的名字
bucket_name = 'data-1'
# 存储桶里的路径和文件名 此处可以重新命名上传后的文件名称,也可以添加文件夹
bucket_file_name = 'password_1.szip'
# 使用 delete_object 方法删除 S3 上的文件
s3_client.delete_object(Bucket=bucket_name, Key=bucket_file_name)
13、【API-列出桶中所有对象】
import boto3
from botocore.config import Config
# 令牌值 【令牌名称root_token】
token = 'Ux0_W3LUrInCU4-jti05KqRsOq8oOAWtnn5PJRO0'
# 你的 Cloudflare R2 访问密钥和秘密密钥
# 访问密钥 ID
access_key = '2152d032bc4ce72f045db5a4dd37316d'
# 机密访问密钥
secret_key = '159a4091914253895c323a3065cb733fc244b9f0b262b7252678c9bf22d40cae'
# 存储桶的 URL
url = 'https://52e14eaf9fc111bc2f70714d2ff607b1.r2.cloudflarestorage.com'
# 创建一个 S3 客户端,这里指定了 R2 的端点
config = Config(signature_version='s3v4')
s3_client = boto3.client(
's3',
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=url,
config=config
)
# 你要上传到存储桶的名字
bucket_name = 'data-1'
# 列出S3存储桶中的所有对象
response = s3_client.list_objects_v2(Bucket=bucket_name)
for a in response['Contents']:
print(f'文件:{a["Key"]} 字节大小:{a["Size"]}')
14、【API-获取文件元数据】
import boto3
from botocore.config import Config
# 令牌值 【令牌名称root_token】
token = 'Ux0_W3LUrInCU4-jti05KqRsOq8oOAWtnn5PJRO0'
# 你的 Cloudflare R2 访问密钥和秘密密钥
# 访问密钥 ID
access_key = '2152d032bc4ce72f045db5a4dd37316d'
# 机密访问密钥
secret_key = '159a4091914253895c323a3065cb733fc244b9f0b262b7252678c9bf22d40cae'
# 存储桶的 URL
url = 'https://52e14eaf9fc111bc2f70714d2ff607b1.r2.cloudflarestorage.com'
# 创建一个 S3 客户端,这里指定了 R2 的端点
config = Config(signature_version='s3v4')
s3_client = boto3.client(
's3',
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=url,
config=config
)
# 你要上传到存储桶的名字
bucket_name = 'data-1'
# 存储桶里的路径和文件名 此处可以重新命名上传后的文件名称,也可以添加文件夹
bucket_file_name = 'MST.txt'
# 获取对象的元数据
try:
response = s3_client.head_object(Bucket=bucket_name, Key=bucket_file_name)
print(f"对象的元数据:{response}")
print(f"最后修改时间:{response['LastModified']}")
print(f"内容长度:{response['ContentLength']} 字节")
# 其他可用的元数据包括 ETag、Metadata、ContentEncoding 等
except Exception as e:
print(f"错误:{e}")
15、【API-生成文件访问URL】
import boto3
from botocore.config import Config
# 令牌值 【令牌名称root_token】
token = 'Ux0_W3LUrInCU4-jti05KqRsOq8oOAWtnn5PJRO0'
# 你的 Cloudflare R2 访问密钥和秘密密钥
# 访问密钥 ID
access_key = '2152d032bc4ce72f045db5a4dd37316d'
# 机密访问密钥
secret_key = '159a4091914253895c323a3065cb733fc244b9f0b262b7252678c9bf22d40cae'
# 存储桶的 URL
url = 'https://52e14eaf9fc111bc2f70714d2ff607b1.r2.cloudflarestorage.com'
# 创建一个 S3 客户端,这里指定了 R2 的端点
config = Config(signature_version='s3v4')
s3_client = boto3.client(
's3',
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=url,
config=config
)
# 你要上传到存储桶的名字
bucket_name = 'data-1'
# 存储桶里的路径和文件名 此处可以重新命名上传后的文件名称,也可以添加文件夹
bucket_file_name = 'data-1'
# 生成一个预签名 URL,有效期为 60 分钟
presigned_url = s3_client.generate_presigned_url(
ClientMethod='get_object',
Params={
'Bucket': bucket_name,
'Key': bucket_file_name
},
ExpiresIn=3600
)
print(presigned_url)
更多推荐
所有评论(0)