我在向托管在 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()是什么原因造成的,我如何确保成功上传任何尺寸的图像?
3 回答

Cats萌萌
TA贡献1805条经验 获得超9个赞
好的,所以我发现 heroku 上的所有请求都会在 30 秒后超时,这就是我的情况。上传时间比这更长,我的解决方案是处理上传客户端并直接上传到 S3。

慕码人2483693
TA贡献1860条经验 获得超9个赞
Django 有一个设置DATA_UPLOAD_MAX_MEMORY_SIZE防止上传大于 2.5MB 的文件(默认值:2621440(即 2.5 MB))并引发 SuspiciousOperation (RequestDataTooBig) Exception
尝试在您的 settings.py 中更改它

12345678_0001
TA贡献1802条经验 获得超5个赞
据我所知,几乎所有网络框架都会限制一次请求中的数据大小。比如Django
, Tornado
, Spring
。
而且它不安全,如果不限制一个请求的最大大小。
正如 MSR974 所说,改变DATA_UPLOAD_MAX_MEMORY_SIZE
它是一种改变关于一个请求的最大大小的设置的方法。但是在你的问题中:确保成功上传任何图像大小。关键词是any size
尝试分段上传?
也就是将一个文件拆分成两个或多个文件,上传到后端后按顺序合并。(希望我解释清楚了)
添加回答
举报
0/150
提交
取消