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:
Conéctese e inicie sesión en su servidor web utilizando el cliente SSH (por ejemplo, PUTTY).
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).