我在向托管在 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 = '[email protected]', to = ['[email protected]'], )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
提交
取消