繁体   English   中英

Django - 较大的文件无法上传到 heroku

[英]Django - Larger files failing to upload to heroku

我在发布到 heroku 上托管的 django 应用程序时遇到问题。 我有一个提交 3 张图像的表单,当我使用大约 100kb 的较小图像时,一切正常,但是当我使用 ~3MB 的较大图像时,上传失败,heroku 日志中的错误显示为at=error code=H13 desc="Connection closed without response" method=POST path="/"

在 django 中,我只是保存图像然后通过电子邮件发送它们,如下所示,其中 formdata 保存图像。 希望片段足够:

for each in form_data:
    pic = form_data[each]
    if pic:
        filename = os.path.join(self.location,f"{i} - {pic.name}")
        imgbytes = pic.read()
        with open(filename, 'wb+') as destination:
            destination.write(imgbytes)

        i+=1
        fileholder.append(filename)
email = EmailMessage(
        subject = 'Hello',
        body = 'Body goes here',
        from_email = 'example@yahoo.com',
        to = ['test@google.com'],
        )

for each in fileholder:
    email.attach_file(each)
email.attach_file(newpath)
email.send()

是什么原因造成的,我如何确保成功上传任何大小的图像?

好的,所以我发现 heroku 上的所有请求都将在 30 秒后超时,这就是我的情况。 上传需要更长的时间,我的解决方案是处理上传客户端并直接上传到 S3。

更多信息在这里

Django 有一个设置DATA_UPLOAD_MAX_MEMORY_SIZE阻止大于 2.5MB 的文件(默认值:2621440(即 2.5 MB))被上传并引发 SuspiciousOperation (RequestDataTooBig) 异常

尝试在您的 settings.py 中更改它

据我所知,几乎所有的网络框架都会在一个请求中限制数据的大小。 DjangoTornadoSpring

如果不限制一个请求的最大大小,这是不安全的。

正如 MSR974 所说,更改DATA_UPLOAD_MAX_MEMORY_SIZE ,这是一种更改有关一个请求的最大大小的设置的方法。但是在您的问题中:确保成功上传任何图像大小。关键字是any size

尝试分段上传?

就是将一个文件拆分成两个或多个文件,上传到后端后按顺序合并。(希望我解释清楚)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM