2017-04-15 163 views
0

因此,我終於能夠建立我正在開發的本地+產品測試項目。用Django在Heroku部署文件上傳

# wsgi.py 
from dj_static import Cling, MediaCling 

application = Cling(MediaCling(get_wsgi_application())) 
application = DjangoWhiteNoise(application) 

我使用dj_static和Postgres本地+督促設置使用白噪聲(沒有任何問題),媒體(文件上傳)靜態文件和。一切工作都很好......靜態文件,文件上傳。

但Heroku dynos重啓後,我失去了所有的文件上傳。我的問題是,---因爲我從Django應用程序中提供媒體文件而不是像S3一樣,dyno重新啓動會擦除所有內容嗎? PS:我知道我可以用AWS等來做到這一點,但我只是想知道這是否是我失去所有上傳的原因。

回答

6

因爲我從Django應用程序中提供媒體文件而不是像S3那樣的東西,dyno重新啓動會擦除所有的東西嗎?

是!那就對了。根據Heroku docs

每個dyno都有自己的臨時文件系統,並帶有最近部署的代碼的新副本。

另請參閱this答案和this答案。

結論:對於媒體文件(上傳的文件),您必須使用一些外部服務(如S3或其他)。 whitenoise只適用於靜態文件。請參閱here爲什麼whitenoise不適合提供用戶上傳的(媒體)文件。

+0

太好了,我想確定這一切。謝謝 ! – Nifled