Метод хранения Laravel Storage возвращает true - PullRequest
0 голосов
/ 26 сентября 2019

В моем приложении laravel есть <form>, где можно загрузить несколько файлов.Когда я отправляю форму, несколько файлов сохраняются в database, но столбец таблицы attachment, который должен хранить путь к файлу, всегда отображает 1 (true).

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);
   }
}

Как уже упоминалось, строка $path = Storage::disk('local')->put('attachments' . $filename, $extension); всегда дает мне true, и в столбце базы данных хранится "1".

Я использовал этот метод ранее для загрузки одного файла, и в этом случае упомянутая строка хранит attachments/somefilename.pdf - так в чем здесь проблема

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

put() возвращает логическое значение , поэтому в столбце базы данных вы видите 1, а не путь к хранимому файлу.Возможно, вы думаете о putFile().

0 голосов
/ 26 сентября 2019

Далее вам нужно запустить

php artisan storage:link

, а затем вы можете получить файл как

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

, так что вы можете сохранить как

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