Python Django-无法上载到heroku的较大文件
我在向heroku上托管的django应用程序发帖时遇到问题。我有一个表单,可以提交3个图像,当我使用约100kb的较小图像时,一切正常,但是当我使用约3MB的较大图像时,上传失败,heroku日志中显示错误,显示为Python Django-无法上载到heroku的较大文件,python,django,heroku,Python,Django,Heroku,我在向heroku上托管的django应用程序发帖时遇到问题。我有一个表单,可以提交3个图像,当我使用约100kb的较小图像时,一切正常,但是当我使用约3MB的较大图像时,上传失败,heroku日志中显示错误,显示为at=error code=H13 desc=“Connection closed without response”method=POST path=“/” 在django中,我只需保存图像,然后发送电子邮件,如下所示,formdata保存图像。希望这个片段足够了: for eac
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()
造成这种情况的原因是什么?我如何确保成功上载任何图像大小?Django的设置阻止上载大于2.5MB(默认值:2621440(即2.5 MB))的文件,并引发可疑操作(RequestDataTooBig)异常
请尝试在您的设置中更改它。据我所知,几乎所有web框架都会在一个请求中限制数据的大小。例如
Django
,Tornado
,Spring
如果不限制一个请求的最大大小,那么它是不安全的
正如MSR974所说,更改数据上传>最大内存大小
,这是一种更改一个请求最大大小设置的方法。但在您的问题中:确保成功上传任何图像大小。关键字是任何大小
尝试多部分上传吗
这是通过将一个文件拆分为两个或多个文件,并在上传到后端后按顺序合并它们。(希望我解释清楚)好的,所以我发现heroku上的所有请求都将在30秒后超时,这就是我的情况。上传需要更长的时间,我的解决方案是在客户端处理上传,然后直接上传到S3
更多信息Hi,你使用的是什么版本的django?@MSR974 Im使用django 3.0.5Hi,我增加到了
DATA\u UPLOAD\u MAX\u MEMORY\u SIZE=262144000
,但错误仍然存在。我还设置了FILE\u UPLOAD\u MAX\u MEMORY\u SIZE=262144000
,仍然是相同的错误。在本地测试时,一切正常,但不确定原因。您的服务器是否在nginx web服务器之后?可能是nginx限制了你的即时通讯只使用免费的heroku层,不确定是否有nginx或者如何编辑它。我也尝试过digital ocean,甚至在我设置任何nginx之前,这种情况也会发生。大家好,我会尝试研究一下,我认为拆分必须用javascript完成,但我并不擅长。我会研究的。该应用程序将用于注册用户,用户可以上传一些图像进行身份识别。上传的每个图像通常都很小,大约300kb,但偶尔有人会有一个2-3MB的文件。@West当然,splits应该使用javascript。如果您不熟悉javascript,请尝试按照MSR974的说法进行操作。另外,另一种方法是尝试在上传前压缩图片或修改大小(:只知道如何使用js,但不太擅长js。)关于解决问题的三种方法。如果你不希望使用js。确保人们上传的图片不能大于你设置的大小。关键字任何大小都无法提供。谢谢你会尝试一下。ddnt know uploads这么快就完成了。