Buscar..


Configuración

El archivo de configuración del sistema de archivos se encuentra en config/filesystems.php . Dentro de este archivo puede configurar todos sus "discos". Cada disco representa un controlador de almacenamiento y una ubicación de almacenamiento particulares. Las configuraciones de ejemplo para cada controlador compatible se incluyen en el archivo de configuración. Entonces, simplemente modifique la configuración para reflejar sus preferencias de almacenamiento y credenciales.

Antes de usar los controladores S3 o Rackspace, deberá instalar el paquete apropiado a través de Composer:

  • Amazon S3: league/flysystem-aws-s3-v2 ~1.0
  • Rackspace: league/flysystem-rackspace ~1.0

Por supuesto, puede configurar tantos discos como desee, e incluso puede tener varios discos que utilicen el mismo controlador.

Cuando use el controlador local, tenga en cuenta que todas las operaciones de archivos son relativas al directorio raíz definido en su archivo de configuración. De forma predeterminada, este valor se establece en el storage/app directory . Por lo tanto, el siguiente método almacenaría un archivo en storage/app/file.txt :

Storage::disk('local')->put('file.txt', 'Contents');

Uso básico

La fachada de Storage se puede utilizar para interactuar con cualquiera de sus discos configurados. Alternativamente, puede escribir una sugerencia de tipo del Illuminate\Contracts\Filesystem\Factory en cualquier clase que se resuelva a través del contenedor de servicio Laravel.

Recuperando un disco particular

$disk = Storage::disk('s3');

$disk = Storage::disk('local');

Determinar si existe un archivo

$exists = Storage::disk('s3')->exists('file.jpg');

Métodos de llamada en el disco predeterminado

if (Storage::exists('file.jpg'))
{
    //
}

Recuperar el contenido de un archivo

$contents = Storage::get('file.jpg');

Configuración de los contenidos de un archivo

Storage::put('file.jpg', $contents);

Antepuesto a un archivo

Storage::prepend('file.log', 'Prepended Text');

Anexar a un archivo

Storage::append('file.log', 'Appended Text');

Borrar un archivo

Storage::delete('file.jpg');

Storage::delete(['file1.jpg', 'file2.jpg']);

Copiar un archivo a una nueva ubicación

Storage::copy('old/file1.jpg', 'new/file1.jpg');

Mover un archivo a una nueva ubicación

Storage::move('old/file1.jpg', 'new/file1.jpg');

Obtener el tamaño del archivo

$size = Storage::size('file1.jpg');

Obtener el último tiempo de modificación (UNIX)

$time = Storage::lastModified('file1.jpg');

Obtener todos los archivos dentro de un directorio

$files = Storage::files($directory);

// Recursive...
$files = Storage::allFiles($directory);

Obtener todos los directorios dentro de un directorio

$directories = Storage::directories($directory);

// Recursive...
$directories = Storage::allDirectories($directory);

Crear un directorio

Storage::makeDirectory($directory);

Eliminar un directorio

Storage::deleteDirectory($directory);

Sistemas de archivos personalizados

La integración Flysystem de Laravel proporciona controladores para varios "controladores" listos para usar; Sin embargo, Flysystem no se limita a estos y tiene adaptadores para muchos otros sistemas de almacenamiento. Puede crear un controlador personalizado si desea usar uno de estos adaptadores adicionales en su aplicación Laravel. No te preocupes, no es demasiado difícil!

Para configurar el sistema de archivos personalizado, deberá crear un proveedor de servicios como DropboxFilesystemServiceProvider . En el método de boot del proveedor, puede inyectar una instancia del Illuminate\Contracts\Filesystem\Factory y llamar al método extend de la instancia inyectada. Alternativamente, puede utilizar el método de extend la fachada del Disk .

El primer argumento del método extend es el nombre del controlador y el segundo es un cierre que recibe las variables $app y $config . El cierre de resolución debe devolver una instancia de League\Flysystem\Filesystem .

Nota: la variable $ config ya contendrá los valores definidos en config/filesystems.php para el disco especificado. Ejemplo de Dropbox

<?php namespace App\Providers;

use Storage;
use League\Flysystem\Filesystem;
use Dropbox\Client as DropboxClient;
use League\Flysystem\Dropbox\DropboxAdapter;
use Illuminate\Support\ServiceProvider;

class DropboxFilesystemServiceProvider extends ServiceProvider {

    public function boot()
    {
        Storage::extend('dropbox', function($app, $config)
        {
            $client = new DropboxClient($config['accessToken'], $config['clientIdentifier']);

            return new Filesystem(new DropboxAdapter($client));
        });
    }

    public function register()
    {
        //
    }

}

Creando un enlace simbólico en un servidor web usando SSH

En la documentación de Laravel, se debe crear un enlace simbólico (enlace simbólico o enlace flexible) de public / storage a storage / app / public para que los archivos sean accesibles desde la web.

(ESTE PROCEDIMIENTO CREARÁ UN ENLACE SIMBÓLICO DENTRO DEL DIRECTORIO DE PROYECTOS LARAVEL)

Estos son los pasos sobre cómo puede crear un enlace simbólico en su servidor web Linux utilizando el cliente SSH:

  1. Conéctese e inicie sesión en su servidor web utilizando el cliente SSH (por ejemplo, PUTTY).

  2. Enlace de almacenamiento / aplicación / público a público / almacenamiento usando la sintaxis

    ln -s target_path link_path

    Ejemplo (en el directorio de archivos de CPanel)

    ln -s /home/cpanel_username/project_name/storage/app/public /home/cpanel_sername/project_name/public/storage

(Se creará una carpeta denominada almacenamiento para vincular la ruta con un indicador >>> en el icono de la carpeta).



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow