Josh Allen
Josh Allen

Reputation: 997

Laravel - Get instance of file from string path

My laravel application successfully uploads and stores my files where I want them to. However, I don't want to store the public url of the file in the database, and instead get them on the fly (they're stored in my public directory) and show a list of links to the uploads.

How can I retrieve File objects from just the strings returned by File::files(public_path() . "/files/uploads"); so I can get the name, size, modified date, etc?

Thanks in advance for any help!

Upvotes: 2

Views: 8477

Answers (2)

nivix zixer
nivix zixer

Reputation: 1651

foreach (File::allFiles($directory) as $file)
{
    /* $file should be a Symfony\Component\Finder\SplFileInfo object */
    $file->getSize();
    $file->getFilename();
    $file->getType();
}

Documentation for the SplFileInfo. (Thanks @Bogdan!)

Upvotes: 2

Bogdan
Bogdan

Reputation: 44526

You can do the following:

foreach (File::files(public_path() . '/fonts') as $path)
{
    File::size($path);         // file size
    File::name($path);         // file name (no extension)
    File::extension($path);    // file extension
    File::mimeType($path);     // file mime type
    File::lastModified($path); // file last modified timestamp
    // and so on...
}

You can see all methods available in the Illuminate\Filesystem\Filesystem class API.

Upvotes: 3

Related Questions