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

A Trunk.Storage implementation for the local file system.

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.

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
@spec 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
@spec 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
@spec 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")