Trunk.Storage.Filesystem (trunk v1.2.0) View Source

A Trunk.Storage implementation for the local file system.

Link to this section Summary

Functions

Generates a URL for the storage directory and file

Deletes the file from the file system.

Saves the file to the file system.

Link to this section Functions

Link to this function

build_uri(directory, filename, opts \\ [])

View Source

Generates a URL for the storage directory and file

  • directory - The relative directory where the file is saved
  • filename - The name of the file that was previous saved
  • opts - The options for the storage system
    • base_url: (optional) The base url to join the path to

Example:

Trunk.Storage.Filesystem.build_url("path/to", "file.ext")
#=> "path/to/file.ext"
Trunk.Storage.Filesystem.build_url("path/to", "file.ext", base_uri: "http://example.com")
#=> "http://example.com/path/to/file.ext"
Trunk.Storage.Filesystem.build_url("path/to", "file.ext", base_uri: "http://example.com/uploads/")
#=> "http://example.com/uploads/path/to/file.ext"
Trunk.Storage.Filesystem.build_url("path/to", "file.ext", base_uri: "/uploads/")
#=> "/uploads/path/to/file.ext"
Link to this function

copy(directory, filename, to_directory, to_filename, opts \\ [])

View Source

Specs

copy(
  directory :: String.t(),
  filename :: String.t(),
  to_directory :: String.t(),
  to_filename :: String.t(),
  opts :: keyword()
) :: :ok | {:error, :file.posix()}

Copies the file within the file system.

  • directory - The relative directory within which to find the file
  • filename - The name of the file to be copied from
  • to_directory - The relative directory within which to copy the file
  • to_filename - The name of the file to be copied to
  • opts - The options for the storage system
    • path: (required) The base path within which to save files
    • acl: (optional) The file mode to store the file (accepts octal 0o644 or string "0644"). See File.chmod/2 for more info.

Example:

The file will be copied from /opts/uploads/path/to/file.ext to /opts/uploads/copied/to/file.copy

Trunk.Storage.Filesystem.copy("path/to/", "file.ext", "copied/to/", "file.copy", path: "/opt/uploads")
Link to this function

delete(directory, filename, opts \\ [])

View Source

Specs

delete(String.t(), String.t(), keyword()) :: :ok | {:error, :file.posix()}

Deletes the file from the file system.

  • directory - The relative directory within which to store the file
  • filename - The name of the file to be saved
  • opts - The options for the storage system
    • path: (required) The base path within which to save files

Example:

The file will be removed from /opts/uploads/path/to/file.ext

Trunk.Storage.Filesystem.delete("path/to/", "file.ext", path: "/opt/uploads")
Link to this function

retrieve(directory, filename, destination_path, opts \\ [])

View Source

Callback implementation for Trunk.Storage.retrieve/4.

Link to this function

save(directory, filename, source_path, opts \\ [])

View Source

Specs

save(
  directory :: String.t(),
  filename :: String.t(),
  source_path :: String.t(),
  opts :: keyword()
) :: :ok | {:error, :file.posix()}

Saves the file to the file system.

  • directory - The relative directory within which to store the file
  • filename - The name of the file to be saved
  • source_path - The full path to the file to be stored. This is a path to the uploaded file or a temporary file that has undergone transformation
  • opts - The options for the storage system
    • path: (required) The base path within which to save files
    • acl: (optional) The file mode to store the file (accepts octal 0o644 or string "0644"). See File.chmod/2 for more info.

Example:

The file will be saved to /opts/uploads/path/to/file.ext

Trunk.Storage.Filesystem.save("path/to/", "file.ext", "/tmp/uploaded_file.ext", path: "/opt/uploads")