簡體   English   中英

Django - 較大的文件無法上傳到 heroku

[英]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 中更改它

據我所知,幾乎所有的網絡框架都會在一個請求中限制數據的大小。 DjangoTornadoSpring

如果不限制一個請求的最大大小,這是不安全的。

正如 MSR974 所說,更改DATA_UPLOAD_MAX_MEMORY_SIZE ,這是一種更改有關一個請求的最大大小的設置的方法。但是在您的問題中:確保成功上傳任何圖像大小。關鍵字是any size

嘗試分段上傳?

就是將一個文件拆分成兩個或多個文件,上傳到后端后按順序合並。(希望我解釋清楚)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM