【问题标题】:Boto3 and Flask: images are not uploading to S3 properlyBoto3 和 Flask:图像未正确上传到 S3
【发布时间】:2020-01-06 07:07:22
【问题描述】:

我正在为我的 Flask 网站构建一个画廊,但在我的 CMS 中生成缩略图时遇到了问题。我有一个函数可以获取上传的图像(存储在列表中),复制列表,并使用zip() 遍历两个列表。我用一个列表制作缩略图,用另一个列表上传完整图像,然后将两者都发送到 AWS S3。问题是我确实制作了缩略图,但完整的图像被上传为大小为 0 字节的图像。我还有一个重命名图像的功能。这是有效的,所以我认为我做对了。

为什么我得到 0 字节的文件?这是怎么发生的?什么是“清空”文件?

@application.route("/upload", methods=['GET', 'POST'])
@login_required
def upload():
    form = UploadForm()
    uploaded_files = request.files.getlist("photo")
    conn = boto3.client(
        's3',
        region_name="region",
        aws_access_key_id='aws_access_key_id',
        aws_secret_access_key='aws_secret_access_key'
        )
    bucket_name = "bucket"
    if form.validate_on_submit():
        i = 1
        thumbs_list = list(uploaded_files)
        for z, w in zip(thumbs_list, uploaded_files):
            x = photo_rename(w)
            thumb = save_thumbnail(z)
            conn.upload_fileobj(x.stream, bucket_name, 'gallery/fulls/'+w.filename)
            conn.upload_fileobj(thumb, bucket_name, 'gallery/thumbs/'+w.filename)
            form_commit = Gallery(event=form.event.data,
                                  date=form.date.data,
                                  image_order=i,
                                  image_file_fl=w.filename,
                                  image_file_th=w.filename
                                  )
            db.session.add(form_commit)
            i += 1
        db.session.commit()
    return '', 204

【问题讨论】:

    标签: python flask amazon-s3


    【解决方案1】:

    我能够在我的for loop 中使用io.BytesIO() 使两个上传都正常工作:

    for z, w in zip(thumbs_list, uploaded_files):
                x = photo_rename(w)
                c = Image.open(x)
                in_mem_file = io.BytesIO()
                c.save(in_mem_file, "JPEG")
                in_mem_file.seek(0)
                thumb = save_thumbnail(z)
                conn.upload_fileobj(in_mem_file, bucket_name, 'gallery/fulls/'+w.filename)
    

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 2012-07-17
      • 1970-01-01
      • 2014-04-15
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 2019-04-29
      • 2014-01-18
      相关资源
      最近更新 更多