簡體   English   中英

如何使用插件上傳?

[英]How to use Plug.Upload?

我想在我的一個路由器中使用Plug.Upload ,上面沒有任何庫或框架,但這里的官方文檔: https ://hexdocs.pm/plug/Plug.Upload.html 沒有提供與其他插件不同的示例例如: Plug.Parsers ( https://hexdocs.pm/plug/Plug.Parsers.html )。

有人可以舉個例子嗎?

Plug.Upload不是插件,正如 Aleksei 在評論中提到的那樣。 您不能將其添加到管道中。 相反,應該在endpoint.exPlug.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 框架文檔中提供了詳細說明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM