Skip to content

Commit c216a08

Browse files
authored
Merge pull request #32 from alfredhuang211/master
增加实现append object接口
2 parents 09ad01e + 100ff34 commit c216a08

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

qcloud_cos/cos_client.py

+31
Original file line numberDiff line numberDiff line change
@@ -1311,6 +1311,37 @@ def copy(self, Bucket, Key, CopySource, CopyStatus='Copy', PartSize=10, MAXThrea
13111311
abort_response = self.abort_multipart_upload(Bucket=Bucket, Key=Key, UploadId=uploadid)
13121312
raise e
13131313
return rt
1314+
1315+
def append_object(self, Bucket, Key, Position, Data, **kwargs):
1316+
"""文件块追加接口
13141317
1318+
:param Bucket(string): 存储桶名称.
1319+
:param Key(string): COS路径.
1320+
:param Position(int): 追加内容的起始位置.
1321+
:param Data(string): 追加的内容
1322+
:kwargs(dict): 设置上传的headers.
1323+
:return(dict): 上传成功返回的结果,包含ETag等信息.
1324+
"""
1325+
headers = mapped(kwargs)
1326+
if 'Metadata' in headers.keys():
1327+
for i in headers['Metadata'].keys():
1328+
headers[i] = headers['Metadata'][i]
1329+
headers.pop('Metadata')
1330+
1331+
url = self._conf.uri(bucket=Bucket, path=quote(Key, '/-_.~')+"?append&position="+str(Position))
1332+
logger.info("append object, url=:{url} ,headers=:{headers}".format(
1333+
url=url,
1334+
headers=headers))
1335+
Body = deal_with_empty_file_stream(Data)
1336+
rt = self.send_request(
1337+
method='POST',
1338+
url=url,
1339+
auth=CosS3Auth(self._conf._secret_id, self._conf._secret_key, Key),
1340+
data=Body,
1341+
headers=headers)
1342+
response = rt.headers
1343+
return response
1344+
1345+
13151346
if __name__ == "__main__":
13161347
pass

0 commit comments

Comments
 (0)