master

laravel/framework

Last updated at: 29/12/2023 09:23

FileHelpers.php

TLDR

This file is a trait that provides some helper methods for working with files in the Illuminate\Http namespace.

Methods

path

This method returns the fully qualified path to the file.

extension

This method returns the extension of the file.

hashName

This method generates a unique filename for the file, which includes a random hash and the file extension.

dimensions

This method returns the dimensions of an image file if applicable.

<?php

namespace Illuminate\Http;

use Illuminate\Support\Str;

trait FileHelpers
{
    /**
     * The cache copy of the file's hash name.
     *
     * @var string
     */
    protected $hashName = null;

    /**
     * Get the fully qualified path to the file.
     *
     * @return string
     */
    public function path()
    {
        return $this->getRealPath();
    }

    /**
     * Get the file's extension.
     *
     * @return string
     */
    public function extension()
    {
        return $this->guessExtension();
    }

    /**
     * Get a filename for the file.
     *
     * @param  string|null  $path
     * @return string
     */
    public function hashName($path = null)
    {
        if ($path) {
            $path = rtrim($path, '/').'/';
        }

        $hash = $this->hashName ?: $this->hashName = Str::random(40);

        if ($extension = $this->guessExtension()) {
            $extension = '.'.$extension;
        }

        return $path.$hash.$extension;
    }

    /**
     * Get the dimensions of the image (if applicable).
     *
     * @return array|null
     */
    public function dimensions()
    {
        return @getimagesize($this->getRealPath());
    }
}