Laravel 5

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

Avatar de AdrienD.
AdrienD.

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

Posté il y a 1 an
Avatar de MaitrePylos
MaitrePylos

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);
Posté il y a 1 an
Avatar de AdrienD.
AdrienD.

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

Posté il y a 1 an

Vous ne pouvez pas répondre à ce sujet.