Laravel 5

File Storage

  • Avatar de PascalSARRAZY
    Membre depuis :
    29/10/2017
    Messages :
    2

    Bonjour

    Je n'arrive pas à comprendre le fonctionnent du Filesytem.
    Je souhaite socker sur un 'disk' du diver 'local' des fichiers privés (accessibles via une url, mais non accessibles du site comme l'est le réperoire app/public via le lien symbolique /storage).

    le fichier config/filesystem.php est configuré de la sorte

    'disks' => [

    'local' => [
    'driver' => 'local',
    'root' => storage_path('app'),
    ],

    'public' => [
    'driver' => 'local',
    'root' => storage_path('app/public'),
    'url' => env('APP_URL').'/storage',
    'visibility' => 'public',
    ],
    'attestation' => [
    'driver' => 'local',
    'root' => storage_path('app/attestation'),
    'url' => env('APP_URL').'/attestation',
    'visibility' => 'private',
    ],

    J'arrive bien à enregistrer les fichiers dans le répertoire storage\app\attestation\

    avec la commande

    Storage::disk('attestation')->put('invoice.pdf')

    J'arrive bien à récupérer le contenu de mes fichiers (peu intéressant pour un pdf ...) avec

    $contents = Storage::disk('attestation')->get('invoice.pdf');

    Mais je n'arrive pas à récupérer l'url de mon fichier avec la commande

    $url = Storage::disk('attestation')->url('invoice.pdf');

    qui me renvoie : http://localhost/attestation/invoice.pdf

    Quelqu'un aurait une idée?

    Merci

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1673

    Salut,

    Pour le disque attestation tu définis ainsi l'url :

    'url' => env('APP_URL').'/attestation',

    S'il y a http://localhost dans la variable APP_URL l'url générée est logique.

  • Avatar de PascalSARRAZY
    Membre depuis :
    29/10/2017
    Messages :
    2

    Merci

    Mais l'url générée ne donne pas accès au fichier.
    Peut-être que cela n'est pas possible parce que le disque a la propriété private ?

    'visibility ' => 'private'

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1673

    Salut,

    Je n'ai jamais mis à private et la documentation n'est pas très locace sur le sujet à part que si on veut rendre les fichiers accessibles à tout le monde il faut utiliser public.

    In Laravel's Flysystem integration, "visibility" is an abstraction of file permissions across multiple platforms. Files may either be declared public or private. When a file is declared public, you are indicating that the file should generally be accessible to others. For example, when using the S3 driver, you may retrieve URLs for public files.

Vous ne pouvez pas répondre à ce sujet.