Plug v1.10.1 Plug.Upload View Source

A server (a GenServer specifically) that manages uploaded files.

Uploaded files are stored in a temporary directory and removed from that directory after the process that requested the file dies.

During the request, files are represented with a Plug.Upload struct that contains three fields:

  • :path - the path to the uploaded file on the filesystem
  • :content_type - the content type of the uploaded file
  • :filename - the filename of the uploaded file given in the request

Note: as mentioned in the documentation for Plug.Parsers, the :plug application has to be started in order to upload files and use the Plug.Upload module.

Security

The :content_type and :filename fields in the Plug.Upload struct are client-controlled. These values should be validated, via file content inspection or similar, before being trusted.

Link to this section Summary

Functions

Returns a specification to start this module under a supervisor.

Requests a random file to be created in the upload directory with the given prefix.

Requests a random file to be created in the upload directory with the given prefix. Raises on failure.

Link to this section Types

Specs

t() :: %Plug.Upload{
  content_type: binary() | nil,
  filename: binary(),
  path: Path.t()
}

Link to this section Functions

Returns a specification to start this module under a supervisor.

See Supervisor.

Specs

random_file(binary()) ::
  {:ok, binary()}
  | {:too_many_attempts, binary(), pos_integer()}
  | {:no_tmp, [binary()]}

Requests a random file to be created in the upload directory with the given prefix.

Specs

random_file!(binary()) :: binary() | no_return()

Requests a random file to be created in the upload directory with the given prefix. Raises on failure.