S3 Multi Part Upload 中断后续传
来源:互联网 发布:蓝牙软件 编辑:程序博客网 时间:2024/05/01 07:52
我们上传大文件时难免出错,但又不愿意重新开始传,这里介绍如何利用boto,继续中断的 multi part upload。
上传大文件示例
import math, osimport botoimport boto.s3.connectionfrom filechunkio import FileChunkIOCONS_AK = 'RC35MU8KM1PMEQ4EFD46'CONS_SK = 'Fg1KO10FS4uIPzSoKenmKAR2YHt052rM9u8VDik9'# Connect to S3c = boto.connect_s3( aws_access_key_id=CONS_AK, aws_secret_access_key=CONS_SK, host='yhg-2', port=80, is_secure=False, calling_format=boto.s3.connection.OrdinaryCallingFormat() )# b = c.get_bucket('mybucket')b = c.create_bucket('mybucket')# Local file pathsource_path = './local-50M-file'source_size = os.stat(source_path).st_size# Create a multipart upload requestmul_key = 'HEHE'header = { 'x-amz-meta-gang': 'Yang Honggang'}# Record upload id# upload_id = mp.idmp = b.initiate_multipart_upload(mul_key, headers=header)# Use a chunk size of 20 MiB (feel free to change this)chunk_size = 20971520chunk_count = int(math.ceil(source_size / float(chunk_size)))# Send the file parts, using FileChunkIO to create a file-like object# that points to a certain byte range within the original file. We# set bytes to never exceed the original file size.for i in range(chunk_count): offset = chunk_size * i bytes = min(chunk_size, source_size - offset) with FileChunkIO(source_path, 'r', offset=offset, bytes=bytes) as fp: mp.upload_part_from_file(fp, part_num=i + 1)print "before complete"# Finish the uploadmp.complete_upload()
中断后续传
假如上传文件过程中断,如何恢复上传呢?我们首先需要有 upload_id。
import boto import boto.s3.connection from boto.s3.multipart import MultiPartUpload CONS_AK = 'RC35MU8KM1PMEQ4EFD46' CONS_SK = 'Fg1KO10FS4uIPzSoKenmKAR2YHt052rM9u8VDik9' # Connect to S3 c = boto.connect_s3( aws_access_key_id=CONS_AK, aws_secret_access_key=CONS_SK, host='yhg-2', port=80, is_secure=False, calling_format=boto.s3.connection.OrdinaryCallingFormat() ) bucket_name = 'mybucket' b = c.get_bucket(bucket_name) mul_key = 'my-multi-obj' upload_id = '2~QfkgBbGqlzGDNPbGCvTyREOudXl4YY4' mp = MultiPartUpload(b) mp.key_name = mul_key mp.bucket_name = 'mybucket' mp.id = upload_id # Continue mp.upload_part_from_file() # Finish the upload mp.complete_upload()
对于rgw,也可以通过如下命令查看中断的上传操作
# rados -p .rgw.buckets.extra ls --cluster yhg
0 0
- S3 Multi Part Upload 中断后续传
- Android: Upload image or file using http POST multi-part
- Multi upload 示例
- PHP Amazon S3 upload/download object
- 中断实验(5)后续
- Send multi-part SMS
- Amazon S3存储中断 影响企业营运
- s3
- s3
- s3
- S3
- s3
- Multi-Programming-14 线程中断
- UG585 Zynq器件 中断Part
- AFNetWorking POST Multi-Part Request 上传图片
- android上实现multi-part上传
- upload?
- upload
- double保留n位小数
- 深入理解Java:SimpleDateFormat安全的时间格式化
- Matlab和外部文件进行数据交换相关的命令
- .xsession-errors:openConnection: connect: No such file or directory cannot connect to brltty at :0
- Tomcat源码解析-整体流程介绍2
- S3 Multi Part Upload 中断后续传
- 项目版本控制
- Linux学习笔记:SQLyog链接linux虚拟机上的mysql数据库
- SGU105【找规律】
- game design原理系列学习笔记(四)
- Maven自动生成可运行jar包并将依赖的jar包一起打包
- 235. Lowest Common Ancestor of a Binary Search Tree&&236. Lowest Common Ancestor of a Binary Tree
- ios 各种证书 详解
- bzoj 4597: [Shoi2016]随机序列