在我的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
-那么这里的问题是什么
答案 0 :(得分:0)
接下来您需要运行
php artisan storage:link
,然后您可以将文件检索为
{{ asset('storage/attachments' . $filename) }}
所以您可能希望另存为
if ( Storage::disk('local')->put('attachments' . $filename, $extension) ) {
$path = 'storage/attachments' . $filename;
}
答案 1 :(得分:0)
put()
returns a boolean value,这就是为什么您在数据库列中看到1
而不是存储文件的字符串路径的原因。您可能会想到putFile()
。