我想Plug.Upload在我的一个路由器中使用,上面没有任何库或框架,但这里的官方文档:https : //hexdocs.pm/plug/Plug.Upload.html没有提供与其他插件不同的示例,例如:Plug.Parsers(https://hexdocs.pm/plug/Plug.Parsers.html)。
有人可以举个例子吗?
Plug.Upload不是插头,正如 Aleksei 在评论中提到的那样。您无法将其添加到您的管道中。相反,:multipart应该允许在Plug.Parsers您的配置中endpoint.ex(默认情况下在那里):
plug Plug.Parsers,
parsers: [:urlencoded, :multipart, :json],
pass: ["*/*"],
json_decoder: Phoenix.json_library()
Run Code Online (Sandbox Code Playgroud)
您需要一个路由来处理带有上传文件的 POST 请求:
post "/upload_photo", UploadController, :photo
Run Code Online (Sandbox Code Playgroud)
相应的控制器操作将Plug.Upload在其参数之一中获得一个结构体:
def photo(conn, %{"upload" => upload}) do
IO.inspect upload.photo, label: "Photo upload information"
# TODO: you can copy the uploaded file now,
# because it gets deleted after this request
json(conn, "Uploaded #{upload.photo.filename} to a temporary directory")
end
Run Code Online (Sandbox Code Playgroud)
为了进行测试,您可以添加一个具有表单的页面 multipart: true
<%= form_for @conn, "/upload_photo", [as: :upload, multipart: true], fn f -> %>
Run Code Online (Sandbox Code Playgroud)
它有一个文件输入
<%= file_input f, :photo, class: "form-control" %>
Run Code Online (Sandbox Code Playgroud)
Phoenix 框架文档中提供了详细说明。
| 归档时间: |
|
| 查看次数: |
2058 次 |
| 最近记录: |