[英]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 中更改它
据我所知,几乎所有的网络框架都会在一个请求中限制数据的大小。 如Django
、 Tornado
、 Spring
。
如果不限制一个请求的最大大小,这是不安全的。
正如 MSR974 所说,更改DATA_UPLOAD_MAX_MEMORY_SIZE
,这是一种更改有关一个请求的最大大小的设置的方法。但是在您的问题中:确保成功上传任何图像大小。关键字是any size
尝试分段上传?
就是将一个文件拆分成两个或多个文件,上传到后端后按顺序合并。(希望我解释清楚)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.