我想将 pdf 文件保存在存储文件夹中,但是当我在表单中插入文件并单击按钮时,它会显示错误“路径不能为空”。然而,路径并不空。这是我可以执行此操作的函数:
public function getFilenametostore(Request $request): string
{
$filenamewithextension = $request->file('profile_pdf')->getClientOriginalName();
$filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);
//get file extension
$extension = $request->file('profile_pdf')->getClientOriginalExtension();
$time = time();
//filename to store
$filenametostore = $filename . '_' . $time . '.' . $extension;
//The problem is here
$request->file('profile_pdf')->storeAs('profile_pdfs', $filenametostore);
return $filenametostore;
}
Run Code Online (Sandbox Code Playgroud)
在存储中,有:storage/app/public/profile_pdfs/
我的表格:
<form action="{{url('poste')}}" method="post" enctype="multipart/form-data">
@csrf
<div class="mt-2">
<label class=" block text-sm text-gray-600" for="cus_email">Upload</label>
<input class="px-2 py-2 text-gray-700 rounded" type="file" name="profile_pdf" id="exampleInputFile">
</div>
<div class="mt-4">
<button class="px-4 py-1 text-white font-light tracking-wider bg-gray-900 rounded" type="submit">Publier</button>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
我的控制器:
if($files = $request->hasFile('profile_pdf'))
{
$filenametostore = $this->getFilenametostore($request);
$p = new Poste;
$p->pdf = $filenametostore;
$p->save();
return redirect()->route('poste.index');
}
Run Code Online (Sandbox Code Playgroud)
小智 9
我刚刚解决了这个问题。如果您的网站托管在 Windows 服务器上,请转到临时文件夹 (C:\Windows\Temp) 并右键单击 -> 属性 -> 编辑用户的权限以完全控制,如下所示。
之后,如果您收到警报,只需单击“确定”。不要忘记使用管理员用户登录才能编辑权限。
小智 6
转到php.ini
文件取消注释upload_tmp_dir
并设置值c:\windows\temp
;upload_tmp_dir =
upload_tmp_dir = c:\windows\temp
如果你使用windows的话就这样替换