[英]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.