最近更新时间:2024-08-26 15:30:41
以下代码用于将指定目录下某一个文件上传,同时可以指定文件ACL:
from ks3.connection import Connection
# 金山云主账号 AccessKey 拥有所有API的访问权限,风险很高。
# 强烈建议您创建并使用子账号进行 API 访问或日常运维,请登录 https://uc.console.ksyun.com/pro/iam/#/user/list创建子账号。
# 通过指定 host(Endpoint),您可以在指定的地域创建新的存储空间。
c = Connection('<YOUR_ACCESS_KEY>', '<YOUR_SECRET_KEY>', host='YOUR_REGION_ENDPOINT')
# 获取存储空间实例。
b = c.get_bucket('<YOUR_BUCKET_NAME>')
# 将指定目录下某一个文件上传,同时可以指定文件ACL
# 填写Object完整路径。Object完整路径中不能包含Bucket名称。
k = b.new_key('<yourKeyName>')
# x-kss-storage-class有效值为"STANDARD"、"STANDARD_IA"。"STANDARD"表示标准存储,"STANDARD_IA"表示低频存储,如果不指定,默认为标准存储。
headers = {"x-kss-storage-class": "STANDARD_IA"}
# 填写本地文件的完整路径。
# object policy : 'private' or 'public-read'
ret = k.set_contents_from_filename("<yourSourceFilePath>", policy="private", headers=headers)
# 请求ID。请求ID是本次请求的唯一标识,强烈建议在程序日志中添加此参数。
print(ret.headers['x-kss-request-id'])
# ETag是put_object方法返回值特有的属性,用于标识一个Object的内容。
print(eval(ret.headers['ETag']))
# HTTP返回码。
if ret and ret.status == 200:
print("上传成功")
以下代码用于将字符串作为Value上传:
from ks3.connection import Connection
# 金山云主账号AccessKey拥有所有API的访问权限,风险很高。
# 强烈建议您创建并使用子账号进行API访问或日常运维,请登录https://uc.console.ksyun.com/pro/iam/#/user/list创建子账号。
# 通过指定 host(Endpoint),您可以在指定的地域创建新的存储空间。
c = Connection('<YOUR_ACCESS_KEY>', '<YOUR_SECRET_KEY>', host='YOUR_REGION_ENDPOINT')
# 获取存储空间实例。
b = c.get_bucket('<YOUR_BUCKET_NAME>')
# 将指定目录下某一个文件上传,同时可以指定文件ACL
# 填写Object完整路径。Object完整路径中不能包含Bucket名称。
k = b.new_key('<yourKeyName>')
# 上传字符串
k.set_contents_from_string('<yourFileContent>', headers=None)
# 将字符串作为Value上传,并设置对象Tag
# key 和 value 需要 url 编码
taggingStr = '<key>=<value>'
headers = {'x-kss-tagging': taggingStr}
ret = k.set_contents_from_string('<yourFileContent>', headers=headers)
以下代码用于从第三方URL拉取文件,并上传至KS3某个bucket中存储成名为object的文件:
from ks3.connection import Connection
# 金山云主账号AccessKey拥有所有API的访问权限,风险很高。
# 强烈建议您创建并使用子账号进行API访问或日常运维,请登录 https://uc.console.ksyun.com/pro/iam/#/user/list创建子账号。
# 通过指定Host(Endpoint),您可以在指定的地域创建新的存储空间。
c = Connection('<YOUR_ACCESS_KEY>', '<YOUR_SECRET_KEY>', host='YOUR_REGION_ENDPOINT')
# 获取存储空间实例。
b = c.get_bucket('<YOUR_BUCKET_NAME>')
# 从第三方URL拉取文件,并上传至KS3某个bucket中存储成名为object的文件。
b.fetch_object('www-logo', source_url='http://fe.ksyun.com/project/resource/img/www-logo.png')
有关抓取网络资源上传的更多信息,请参见:Put Fetch
import requests
from ks3.connection import Connection
# 金山云主账号AccessKey拥有所有API的访问权限,风险很高。
# 强烈建议您创建并使用子账号进行API访问或日常运维,请登录https://uc.console.ksyun.com/pro/iam/#/user/list创建子账号。
# 通过指定Host(Endpoint),您可以在指定的地域创建新的存储空间。
c = Connection('<YOUR_ACCESS_KEY>', '<YOUR_SECRET_KEY>', host='YOUR_REGION_ENDPOINT')
# 获取存储空间实例。
b = c.get_bucket('<YOUR_BUCKET_NAME>')
# 填写Object完整路径。Object完整路径中不能包含Bucket名称。
k = b.new_key('<yourKeyName>')
if k:
headers = {
'Content-Type': 'text/plain',
'x-kss-acl': 'public-read',
}
# 生成上传文件的签名URL,有效时间为60秒。
url = k.get_presigned_url(60, headers=headers)
print(url)
# PUT请求通过URL上传文件,请求时需要携带同样的Headers
with open('<yourFilePath>', 'rb') as file:
response = requests.put(url, data=file, headers=headers)
print(f'Status Code: {response.status_code}')
纯净模式