全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

简单上传(Python)

最近更新时间:2025-06-11 14:15:56

简单上传只能上传小于等于5GB的文件,超过5GB的文件请使用分块上传高级上传

上传本地文件

以下代码用于将指定目录内某一个文件上传,同时可以指定文件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("request_id: ", ret.headers['x-kss-request-id'])
# 另一种获取请求ID的方式
print("request_id: ", ret.response_metadata.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>')

# 上传字符串
ret = k.set_contents_from_string('<yourFileContent>', headers=None)
# 请求ID。请求ID是本次请求的唯一标识,强烈建议在程序日志中添加此参数。
print("request_id: ", ret.response_metadata.request_id)
# HTTP返回码。
if ret and ret.status == 200:
    print("上传成功")

# 如果需要设置对象标签,如下操作;key 和 value 需要url编码
taggingStr = '<key>=<value>'
headers = {'x-kss-tagging': taggingStr}
ret_with_tagging = k.set_contents_from_string('<yourFileContent>', headers=headers)
# 请求ID。请求ID是本次请求的唯一标识,强烈建议在程序日志中添加此参数。
print("request_id: ", ret_with_tagging.response_metadata.request_id)
# HTTP返回码。
if ret_with_tagging and ret_with_tagging.status == 200:
    print("上传成功")

抓取网络资源上传

以下代码用于从第三方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>')

# 将指定目录下某一个文件上传,同时可以指定文件ACL
# 填写Object完整路径。Object完整路径中不能包含Bucket名称。
k = b.new_key('<yourKeyName>')

# 从第三方URL拉取文件,并上传至KS3某个bucket中存储成名为object的文件。
ret = k.fetch_object(source_url='http://fe.ksyun.com/project/resource/img/www-logo.png', headers={'x-kss-acl': 'public-read'})
print("request_id: ", ret.response_metadata.request_id)
if ret and ret.status == 200:
  print('fetch成功')

有关抓取网络资源上传的相关API,请参见:Put Fetch

使用签名URL临时授权上传文件

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:
    # 生成上传文件的签名URL,以 有效时间为60秒 举例
    url = k.get_presigned_url(60)
    # PUT请求通过URL上传文件,请求时需要携带同样的Headers
    with open('<yourFilePath>', 'rb') as file:
        response = requests.put(url, data=file, headers=headers)
        print('put_via_presigned_url, request_id: ', response.headers.get('x-kss-request-id'))

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈