Plug.Upload
- не плагин, как отметил Алексей в комментариях.Вы не можете добавить его в свой конвейер.Вместо этого :multipart
должно быть разрешено в конфигурации Plug.Parsers
в вашей endpoint.ex
(она есть по умолчанию):
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 .