pythonに基づいてOSSコードへのアップロードを実現します。
基礎的環境
# +++++ OSS ,
# ,centOS python2.7
# python -V
# python
# yum install -y python-devel
# OSS sdk
# yum install -y python-pip
# pip2.7 install oss2
# oss2
'''
>>> import oss2
>>> oss2.__version__
'2.6.0'
'''
# OSS crcmod
'''
python , , , , oss2
>>> import crcmod._crcfunext
, :
1、 crcmod
# pip uninstall crcmod
2、 python-devel
3、 crcmod
# pip install crcmod
'''
小さいファイルをアップロード
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import oss2
# AccessKey API , 。 RAM API , https://ram.console.aliyun.com RAM 。
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
# Endpoint , Region 。
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
# , 。
with open('<yourLocalFile>', 'rb') as fileobj:
# Seek 1000 。 1000 , 。
fileobj.seek(1000, os.SEEK_SET)
# Tell 。
current = fileobj.tell()
bucket.put_object('<yourObjectName>', fileobj)
スライスアップロード
# -*- coding: utf-8 -*-import os
from oss2 import SizedFileAdapter, determine_part_size
from oss2.models import PartInfo
import oss2
# AccessKey API , 。 RAM API , https://ram.console.aliyun.com RAM 。
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
# Endpoint , Region 。
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
key = '<yourObjectName>'
filename = '<yourLocalFile>'
total_size = os.path.getsize(filename)
# determine_part_size 。
part_size = determine_part_size(total_size, preferred_size=100 * 1024)
# 。
upload_id = bucket.init_multipart_upload(key).upload_id
parts = []
# 。
with open(filename, 'rb') as fileobj:
part_number = 1
offset = 0
while offset < total_size:
num_to_upload = min(part_size, total_size - offset)
# SizedFileAdapter(fileobj, size) , 。
result = bucket.upload_part(key, upload_id, part_number,
SizedFileAdapter(fileobj, num_to_upload))
parts.append(PartInfo(part_number, result.etag))
offset += num_to_upload
part_number += 1
# 。
bucket.complete_multipart_upload(key, upload_id, parts)
# 。
with open(filename, 'rb') as fileobj:
assert bucket.get_object(key).read() == fileobj.read()
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。