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()
。
在我的 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()
。