将存储在内存中的文件上传到s3

时间:2012-09-26 15:55:51

标签: python amazon-s3 amazon

我想继续问一个昨天发布的问题。我想上传一些视频片段到亚马逊s3。这些视频是作为中间结果生成的。所以我更喜欢将这些小视频片段存储在内存中(大约400~500 KB),然后将每个视频片段上传到s3。上传后,临时文件可以在内存中删除。因此,我想使用tempfile。但是以下代码中存在错误。请看看如何正确地做到这一点?

  @contextmanager
    def s3upload(key):
       with tempfile.SpooledTemporaryFile(max_size=1021*1000) as buffer:
          yield buffer
          buffer.seek(0)
         # key.send_file(buffer)
          k.set_contents_from_file(buffer)
          k.set_acl('public-read')


conn = boto.connect_s3()
b = conn.get_bucket('cc_test_s3')
k = Key(b)
k.key = '1.flv'
mime = mimetypes.guess_type('1.flv')[0]

with s3upload(k) as out:
    out.write('1.flv')

输出:

The size of file uploaded is 5 KB, which is much less than the actual size of 1.flv (~400 KB). 

1 个答案:

答案 0 :(得分:0)

我建议您使用s3fuse,它基本上将s3存储桶安装在本地驱动器上,然后您可以直接保存文件,就像保存在本地目录中一样。作为参考,您可以查看s3fuse - google-code