Laravel从上传中获取保存文件的路径



我有一个文件上传的laravel(以及传递给数据库的其他数据(一切正常。但是我只是不知道如何保存保存的文件的路径。

这是我的控制器功能:

public function store(Request $request)
{
request()->validate([
'name'              => 'required',
'logo'              => 'nullable',
'original_filename' => 'nullable',
]);
//This is where the file uploads?
if ($request->hasFile('logo')) {
$request->file('logo')->store('carrier_logo');
$request->merge([
'logo'              => '',//TODO: get file location
'original_filename' => $request->file('logo')->getClientOriginalName(),
]);
}
Carrier::create($request->all());
return redirect()->route('carriers.index')->with('toast', 'Carrier created successfully.');
}

我想要实现的目标: 我想logo填满类似carrier_logo/ZbCG0lnDkUiN690KEFpLrNcn2exPTB8mUdFDwAKN.png

每次我尝试修复它时发生的事情是它将临时路径放置在数据库中。这最终成为PHP安装目录中的内容。

只需将结果分配给变量:

$path = $request->file('logo')->store('carrier_logo');

根据文档

然后,您可以随心所欲地使用$path变量。

就像这样分配值。

$location=base_path('img/'.$filename);

并将其保存在数据库中。

你可以这样做:

对于文件名

$fileName = $request->file('test')->getClientOriginalName();

$fileName = $request->user()->id.'.'.$request->file('logo')->getClientOriginalExtension();
$imageDirectory = 'logo_images';
$path = $request->file('logo')->storeAs($imageDirectory, $fileName);
dd($path);

最新更新