为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕娘9325324 2023-04-25 17:48:12
我在向托管在 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。


查看完整回答
反对 回复 2023-04-25
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

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

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


查看完整回答
反对 回复 2023-04-25
?
12345678_0001

TA贡献1802条经验 获得超5个赞

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

而且它不安全,如果不限制一个请求的最大大小。

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

尝试分段上传?

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


查看完整回答
反对 回复 2023-04-25
  • 3 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信