2016-11-09 112 views
2

所以我試圖在網站上設置上傳功能。但是,我正在努力保持上傳文件的位置。Elixir /鳳凰文件上傳文件夾

我遵循鳳凰準則,將plug Plug.Static, at: "/files", from: "/media", gzip: false添加到我的Endpoint文件中,並在項目的根目錄中創建/ media文件夾。但不斷收到錯誤:no route found for GET /files/3-news.jpg (Kz.Router)

我不確定我在做什麼錯,也許/media文件夾的位置不正確?我已經把它放到其他文件夾所在的根目錄,比如web,priv,test等。它是否是正確的地方?或者路徑必須是完整的操作系統路徑,例如/Users/Jack/Desktop/myApp/media/

在此先感謝傢伙,並有任何建議表示讚賞!

P.S.我可以使用File.cp(upload.path, "media/#{file_name}")上傳文件,並且它們出現在/media中,但仍無法通過http://localhost:4000/files/4-news.jpg訪問它們

回答

5

只是想通了。我的錯誤是把plug Plug.Static, at: "/files", from: "media/"在Entpoint文件的底部,但應該在現有Plug.Static下放置,這樣的:

plug Plug.Static, 
at: "/", from: :myApp, gzip: false, 
only: ~w(css fonts images js favicon.ico robots.txt) 

plug Plug.Static, at: "/files", from: "media/" 

或至少是plug myApp.Router之前!然後你可以訪問你需要的所有文件。