Elixir / Phoenix文件上传文件夹

时间:2016-11-09 07:29:33

标签: upload elixir phoenix-framework

所以我试图在网站上设置上传功能。但是,我正在努力保留上传文件的位置。

我遵循了凤凰指南,将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等。这是正确的地方吗?或者路径必须是完整的OS路径,如/Users/Jack/Desktop/myApp/media/

先谢谢你们,感谢任何建议!

P.S。我可以使用File.cp(upload.path, "media/#{file_name}")上传文件,它们显示在/media,但仍无法通过http://localhost:4000/files/4-news.jpg

访问它们

2 个答案:

答案 0 :(得分:6)

刚想通了。我的错误是将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之前!然后,您可以访问所需的所有文件。

答案 1 :(得分:0)

我们还可以将路径放入控制器中并将其复制到任何路径

path_upload = upload["docfile"]

IO.inspect path_upload.filename, label: "Photo upload information"
File.cp(path_upload.path, Path.absname("uploads/#{path_upload.filename}"))