Filesystem API

The Filesystem API is the most important interface Flysystem describes when you want to use Flysystem in your application.

Write Files

$response = $filesystem->write($path, $contents [, $config]);
param description type
$path location of a file string
$contents file contents string
$config An optional configuration array array
$response success boolean bool

Write Files using a stream

$response = $filesystem->writeStream($path, $resource [, $config]);
param description type
$path location of a file string
$resource file stream resource
$config An optional configuration array array
$response success boolean bool

Update Files

$response = $filesystem->update($path, $contents [, $config]);
param description type
$path location of a file string
$contents file contents string
$config An optional configuration array array
$response success boolean bool

Update Files using a stream

$response = $filesystem->updateStream($path, $resource [, $config]);
param description type
$path location of a file string
$resource file stream resource
$config An optional configuration array array
$response success boolean bool

Write or Update Files

$response = $filesystem->put($path, $contents [, $config]);
param description type
$path location of a file string
$contents file contents string
$config An optional configuration array array
$response success boolean bool

Write or Update Files using a stream

$response = $filesystem->putStream($path, $resource [, $config]);
param description type
$path location of a file string
$resource file stream resource
$config An optional configuration array array
$response success boolean bool

Read Files

$contents = $filesystem->read($path);
param description type
$path location of a file string
$contents file contents or false on failure string|false

Read Files as a stream

$resource = $filesystem->readStream($path);
param description type
$path location of a file string
$resource file stream or false on failure resource|false

Check if a file or directory exists

$exists = $filesystem->has($path);
param description type
$path location of a file/directory string
$exists whether it exists bool

This only has consistent behaviour for files, not directories. Directories are less important in Flysystem, they’re created implicitly and often ignored because not every adapter (filesystem type) supports directories.


Delete Files or Directories

$response = $filesystem->delete($path);
param description type
$path location of a file/directory string
$response success boolean bool

Read and Delete

$contents = $filesystem->readAndDelete($path);
param description type
$path location of a file string
$contents file contents or false on failure string|false

Rename Files

$response = $filesystem->rename($from, $to);
param description type
$from location of a file string
$to new location string
$response success boolean bool

When used with the Local adapter, this will rename a directory as well. This behaviour will not be present in V2.

Copy Files

$response = $filesystem->copy($from, $to);
param description type
$from location of a file string
$to new location string
$response success boolean bool

Get Mimetypes

$response = $filesystem->getMimetype($path);
param description type
$path location of a file string
$response mime-type or false on failure string|false

Get Timestamps

This function returns the last updated timestamp.

$response = $filesystem->getTimestamp($path);
param description type
$path location of a file string
$response timestamp of modification or false on failure integer|false

Get File Sizes

$response = $filesystem->getSize($path);
param description type
$path location of a file string
$response size of a file or false on failure integer|false

Create Directories

$response = $filesystem->createDir($path);
param description type
$path location of a file string
$response success boolean boolean

If needed, directories are also made implicitly when writing to a deeper path. In general creating a directory is not required in order to write to it.

Some filesystems don’t require directories at all, and for those filesystems (like AWS S3) no directories are created when writing files.


Delete Directories

Deleting directories is always done recursively.

$response = $filesystem->deleteDir($path);
param description type
$path location of a file string
$response success boolean boolean

Manage Visibility

Visibility is the abstraction of file permissions across multiple platforms. Visibility can be either public or private.

use League\Flysystem\AdapterInterface;

$filesystem->write($path, $contents, [
    'visibility' => AdapterInterface::VISIBILITY_PRIVATE
]);

// Or simply
$filesystem->write($path, $contents, ['visibility' => 'private']);

You can also change and check visibility of existing files:

if ($filesystem->getVisibility($path) === 'private') {
    $filesystem->setVisibility($path, 'public');
}

Global visibility setting

You can set the visibility as a default, which prevents you from setting it all over the place.

$filesystem = new League\Flysystem\Filesystem($adapter, [
    'visibility' => AdapterInterface::VISIBILITY_PRIVATE
]);

List Contents

$contents = $filesystem->listContents($path, $recursive);

The result of a contents listing is a collection of arrays containing all the metadata the file manager knows at that time. By default you’ll receive path info and file type. Additional info could be supplied by default depending on the adapter used.

Example:

foreach ($contents as $object) {
    echo $object['basename'].' is located at '.$object['path'].' and is a '.$object['type'];
}

By default Flysystem lists the top directory non-recursively. You can supply a directory name and recursive boolean to get more precise results

$contents = $filesystem->listContents('some/dir', true);

Using streams for reads and writes

Some SDK’s close streams after consuming them, therefore, before calling fclose on the resource, check if it’s still valid using is_resource.

$stream = fopen('/path/to/database.backup', 'r+');
$filesystem->writeStream('backups/'.strftime('%G-%m-%d').'.backup', $stream);

// Using write you can also directly set the visibility
$filesystem->writeStream('backups/'.strftime('%G-%m-%d').'.backup', $stream, [
    'visibility' => AdapterInterface::VISIBILITY_PRIVATE
]);

if (is_resource($stream)) {
    fclose($stream);
}

// Or update a file with stream contents
$filesystem->updateStream('backups/'.strftime('%G-%m-%d').'.backup', $stream);

// Retrieve a read-stream
$stream = $filesystem->readStream('something/is/here.ext');
$contents = stream_get_contents($stream);
fclose($stream);

// Create or overwrite using a stream.
$putStream = tmpfile();
fwrite($putStream, $contents);
rewind($putStream);
$filesystem->putStream('somewhere/here.txt', $putStream);

if (is_resource($putStream)) {
    fclose($putStream);
}