Laravel 5

Comment fournir le path qui va bien à response()->file($path)

  • Avatar de AdrienD.
    Membre depuis :
    31/08/2018
    Messages :
    2

    Bonjour à tous!

    Je m'arrache les cheveux pour trouver comment donner le bon path à la méthode

    response()->file

    Je m'explique: à l'enregistrement d'un document, je stocke le path sous la forme "repertoire/nom.ext", c'est le path généré automatiquement par la méthode d'enregistrement du fichier.

    Pour un téléchargement, j'arrive à exploiter ce path sans erreur en utilisant l'objet Storage:

    return Storage::download($path)

    Mais je préfère le comportement que permet l'utilisation de response->file (si PDF ou image, le navigateur affiche le document au lieu de le télécharger). J'y arrive en reconstruistant le path complet de la manière suivante:

    return response()->file(storage_path("app")."\".$path);

    PROBLEME: dans le path reconstruit ci-dessus, je rajoute un antislash. Ca marche en local sur mon environnement Windows, mais ça plante en production sur mon serveur Linux.

    D'où ma question: comment donner proprement et simplement le path attendu par la méthode response()->file, sans faire de bidouille pour rajouter les slash ou antislash en fonction de l'environnement ?

    Merci d'avance pour votre aide!
    Et à bientôt!

    Adrien

  • Avatar de MaitrePylos
    Membre depuis :
    27/05/2013
    Messages :
    259

    Bonjour,
    Je n'ai pas encore bien exploré ce système de storage.
    Mais pour le souci Windows/Linux ceci devrais faire l'affaire :

    return response()->file(storage_path("app").DIRECTORY_SEPARATOR.$path);
  • Avatar de AdrienD.
    Membre depuis :
    31/08/2018
    Messages :
    2

    Merci MaitrePylos!
    Ca fonctionne à merveille!

    Difficile de t'expliquer pourquoi j'ai mis plus de 5 mois à tester... mais j'avais bien dans un coin de la tête de faire ce fix!
    Merci,
    Adrien

Vous ne pouvez pas répondre à ce sujet.