×

Gestionar archivos con Laravel & Dropbox

Crear una aplicación con dropbox

Ingresa a https://www.dropbox.com/lp/developers

Da clic en Create Apps

Selecciona la opción de Dropbox API

Selecciona App Folder como tipo de acceso, y escribe el nombre que recibirá tu aplicación. Finalmente da clic en Create app

Después tenemos que generar nuestro token de acceso:

Proyecto de Laravel

Previamente debemos tener creado un proyecto de laravel.

Dentro del proyecto tenermos que crear:

  • Modelo Dropbox
  • Controlador DropboxController
  • Migración dropboxes_table

Dentro de la ruta de nuestro proyecto vamos a ejecutasr el siguiente comando:

php artisan make:model Dropbox -mc

Ahora vamos a modificar la migración con los siguientes elementos:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateDropboxesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('dropboxes', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('path');
            $table->integer('size');
            $table->string('extension');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('dropboxes');
    }
}

El modelo lo vamos a modificar de la siguinte manera:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Dropbox extends Model
{
    protected $guarded = [];

}

Ahora debemos ejecutar la migración:

php artisan migrate

Instalar & configurar el paquete de Dropbox

Ejecuta el siguinte comando:

composer require spatie/flysystem-dropbox

Ahora debemos añadir un nuevo driver en el archivo de configuración del sistema de archivos config/filesystems.php en el arreglo disck.

'dropbox' => [
    'driver' => 'dropbox',
    'authorizationToken' => env('DROPBOX_TOKEN')
]

Ahora debemos definir la variable de entorno en nuestro archivo .env

DROPBOX_TOKEN=TOKEN_HASH

Reemplaza TOKEN_HASH por el token generado en Dropbox.

Ahora debemos crear nuestro Service Provider llamado DropboxServiceProvider 

Ejecuta el comando:

php artisan make:provider DropboxServiceProvider

Abre i pega el siguinte código en el DropboxServiceProvider

<?php

namespace App\Providers;

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

class DropboxServiceProvider extends ServiceProvider
{
    /**
     * Perform post-registration booting of services.
     *
     * @return void
     */
    public function boot()
    {
        // Extendemos el Storage de Laravel agregando nuestro nuevo driver.
        Storage::extend('dropbox', function ($app, $config) { 
            $client = new DropboxClient(
                $config['authorizationToken'] // Hacemos referencia al hash
            );

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

    /**
     * Register bindings in the container.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

 


dashboard