Laravel 存储 put 方法 returns true

Laravel Storage put method returns true

在我的 laravel 应用程序中,我有一个 <form> 可以上传多个文件。当我提交表单时,多个文件存储在 database 中,但是应该存储文件路径的 table 列 attachment 始终显示 1 (正确)。

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 - 那么这里有什么问题

接下来您需要运行

php artisan storage:link

然后您可以检索文件

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

所以您可能想另存为

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

put() returns a boolean value,这就是您在数据库列中看到 1 而不是存储文件的字符串路径的原因。您可能会想到 putFile()