3

在我的laravel-application 我有一个<form>可以上传多个文件的地方。当我提交表单时,多个文件被存储到 中database,但是应该存储文件路径的表列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- 那么这里的问题是什么

4

2 回答 2

2

put()返回一个布尔值,这就是为什么您1在数据库列中看到 a 而不是存储文件的字符串路径的原因。你可能会想putFile()

于 2019-09-26T13:01:40.480 回答
0

接下来你需要运行

php artisan storage:link

然后您可以将文件检索为

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

所以你可能想另存为

if ( Storage::disk('local')->put('attachments' . $filename, $extension) ) {
    $path = 'storage/attachments' . $filename;
}
于 2019-09-26T12:49:54.170 回答