Python Django-无法上载到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

我在向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()
造成这种情况的原因是什么?我如何确保成功上载任何图像大小?

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这么快就完成了。