繁体   English   中英

Elixir/Phoenix 文件上传文件夹

[英]Elixir/Phoenix file upload folder

所以我试图在网站上设置上传功能。 但是,我正在为保存上传文件的位置而苦恼。

我遵循了 phoenix 指南,将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/

在此先感谢大家,任何建议表示赞赏!

PS 我可以使用File.cp(upload.path, "media/#{file_name}")上传文件,它们出现在/media ,但仍然无法通过http://localhost:4000/files/4-news.jpg访问它们http://localhost:4000/files/4-news.jpg

刚刚想通了。 我的错误是将plug Plug.Static, at: "/files", from: "media/"放在 Endpoint 文件的底部,但它应该放在现有的 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之前! 然后您可以访问您需要的所有文件。

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

path_upload = upload["docfile"]

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM