[英]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.