我想在我的一个路由器上使用Plug.Upload,上面没有任何库或框架,但是官方文档:https://hexdocs.pm/plug/Plug.Upload.html并没有提供一个示例,这与其他插件不同,比如:Plug.Parsers (https://hexdocs.pm/plug/Plug.Parsers.html)。
谁能举个例子?
发布于 2019-04-23 23:41:26
正如阿列克谢在评论中提到的那样,Plug.Upload并不是一个插头。您不能将其添加到您的管道中。相反,应该在endpoint.ex的Plug.Parsers配置中允许:multipart (默认情况下它就在那里):
plug Plug.Parsers,
parsers: [:urlencoded, :multipart, :json],
pass: ["*/*"],
json_decoder: Phoenix.json_library()你需要一个路由来处理上传文件的POST请求:
post "/upload_photo", UploadController, :photo相应的控制器操作将在其参数之一中获得一个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为了进行测试,您可以添加一个包含带有multipart: true的表单的页面
<%= form_for @conn, "/upload_photo", [as: :upload, multipart: true], fn f -> %>,它有一个文件输入。
<%= file_input f, :photo, class: "form-control" %>Phoenix framework docs中提供了详细的说明。
https://stackoverflow.com/questions/55812112
复制相似问题