腾讯云文件上传
腾讯云图片上传
`安装相应包:
pip install -U cos-python-sdk-v5
在腾讯云上申请密钥
创建自己的存储桶
PUT Object
class Upload(APIView):
def post(self,request):
file=request.FILES.get('file')
print(file.name)
from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
secret_id = 'sectet_id' # 替换为用户的 secretId
secret_key = 'sectet_key' # 替换为用户的 secretKey
region = 'ap-nanjing' # 替换为自己的 Region
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key)
client = CosS3Client(config)
response = client.put_object(
Bucket='替换为自己的Bucket', # Bucket由bucketname-appid组成
Body=file, # 文件
Key=file.name, #文件名
StorageClass='STANDARD',
ContentType='image; charset=utf-8'
)
print(response['ETag'])
return Response({'code':200})
请求头:
名称 | 描述 | 类型 | 是否必选 |
---|---|---|---|
Cache-Control | RFC 2616 中定义的缓存指令,将作为对象元数据保存 | string | 否 |
Content-Disposition | RFC 2616 中定义的文件名称,将作为对象元数据保存 | string | 否 |
Content-Encoding | RFC 2616 中定义的编码格式,将作为对象元数据保存 | string | 否 |
Content-Type | RFC 2616 中定义的 HTTP 请求内容类型(MIME),此头部用于描述待上传对象的内容类型,将作为对象元数据保存。 例如text/html 或image/jpeg |
string | 是 |
Expires | RFC 2616 中定义的缓存失效时间,将作为对象元数据保存 | string | 否 |
Transfer-Encoding | 如果希望在上传时分块传输,则指定 Transfer-Encoding: chunked 请求头部,此时请求体遵循 RFC 2616 中定义的传输编码格式,且不能指定 Content-Length 请求头部 | string | 否 |
x-cos-meta-* | 包括用户自定义元数据头部后缀和用户自定义元数据信息,将作为对象元数据保存,大小限制为2KB 注意:用户自定义元数据信息支持下划线(_),但用户自定义元数据头部后缀不支持下划线,仅支持减号(-) | string | 否 |
x-cos-storage-class | 对象存储类型。枚举值请参见 存储类型 文档,例如 MAZ_STANDARD,MAZ_STANDARD_IA,STANDARD_IA,ARCHIVE,DEEP_ARCHIVE。默认值:STANDARD | Enum | 否 |
x-cos-traffic-limit | 针对本次上传进行流量控制的限速值,必须为数字,单位默认为 bit/s。限速值设置范围为819200 - 838860800,即100KB/s - 100MB/s,如果超出该范围将返回400错误 |
本地文件上传
from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
secret_id = '自己id' # 替换为用户的 secretId
secret_key = '自己key' # 替换为用户的 secretKey
region = 'ap-nanjing' # 替换为用户的 Region
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key)
client = CosS3Client(config)
response = client.upload_file(
Bucket='替换自己的Bucket',
LocalFilePath='code.png', # 本地文件的路径
Key='p1.jpg', # 上传到桶之后想要的文件名
)
print(response['ETag'])
`