Amazon S3文件上传问题使用" BOTO"在我的烧瓶应用程序-Python中

时间:2015-03-30 03:52:05

标签: python amazon-s3 flask boto

在我的烧瓶应用程序中,我正在使用一个函数将文件上传到亚马逊s3,使用Boto。

大多数情况下它的工作正常,但有时它上传文件为零字节文件,没有扩展名。

为什么有时失败,

我正在验证表单中的用户图像文件。

FileField('Your photo',validators=[FileAllowed(['jpg', 'png'], 'Images only!')])

我的图片上传功能。

def upload_image_to_s3(image_from_form):


    #upload  pic to amazon
    source_file_name_photo = secure_filename(image_from_form.filename)
    source_extension = os.path.splitext(source_file_name_photo)[1]
    destination_file_name_photo = uuid4().hex + source_extension


    s3_file_name = destination_file_name_photo

    # Connect to S3 and upload file.

    conn = boto.connect_s3('ASJHjgjkhSDJJHKJKLSDH','GKLJHASDJGFAKSJDGJHASDKJKJHbbvhjcKJHSD')
    b = conn.get_bucket('mybucket')

    # Connect to S3 and upload file.

    sml = b.new_key("/".join(["myfolder",destination_file_name_photo]))
    sml.set_contents_from_string(image_from_form.read())
    acl='public-read'
    sml.set_acl(acl)

    return s3_file_name

1 个答案:

答案 0 :(得分:1)

您的资产有多大?如果上传量太大,您可能需要对其进行多部分/分块,否则会超时。

bucketObject.initiate_multipart_upload('/local/object/as/file.ext')

这意味着您不会使用set_contents_from_string,而是存储和上传。你可能不得不使用一些东西来查看文件,比如FileChuckIO。

如果这适用于您,可以使用此示例:http://www.bogotobogo.com/DevOps/AWS/aws_S3_uploading_large_file.php

此外,您可能需要编辑上面的帖子并更改您的AWS密钥。