4 votes

La méthode put de Laravel Storage retourne vrai

Dans mon laravel -J'ai une application <form> où il est possible de télécharger plusieurs fichiers. Lorsque je soumets le formulaire, les fichiers multiples sont stockés dans le dossier de l'utilisateur. database mais la colonne de la table attachment qui est censé stocker le chemin du fichier, affiche toujours 1 (vrai).

if (request()->has('attachment_files')) {
    $files = request()->attachment_files;

    foreach ($files as $file) {

      $filename = $file->getClientOriginalName();
      $extension = $file->getClientOriginalExtension();
      $filesize = $file->getClientSize();

      $path = Storage::disk('local')->put('attachments' . $filename, $extension);
      $data = SingleApplicationFile::create([
         'files_id' => $application->id,
         'single_application_id' => $application->id,
         'attachment' => $path,
         'attachment_name' => $filename,
         'attachment_size' => $filesize,
      ]);

      $attachment_file[] = $data;

      new SingleApplicationFile($attachment_file);
   }
}

Comme mentionné, la ligne $path = Storage::disk('local')->put('attachments' . $filename, $extension); me donne toujours true et dans la colonne de la base de données, un "1" est stocké.

J'ai déjà utilisé cette méthode pour le téléchargement d'un seul fichier, et dans ce cas, la ligne mentionnée stocke les données. attachments/somefilename.pdf - alors quel est le problème ici

4voto

Erich Points 1694

put() renvoie une valeur booléenne c'est pourquoi vous voyez un 1 dans la colonne de votre base de données et non le chemin d'accès à votre fichier stocké. Vous pouvez penser à putFile() à la place.

0voto

Ensuite, vous devez exécuter

php artisan storage:link

et ensuite vous pouvez récupérer le fichier comme

{{ asset('storage/attachments' . $filename) }}

vous pouvez donc enregistrer sous

if ( Storage::disk('local')->put('attachments' . $filename, $extension) ) {
    $path = 'storage/attachments' . $filename;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X