“路径不能为空”laravel

Ryr*_*yry 6 laravel

我想将 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的话就这样替换

  • 如果您使用 Laragon,请取消注释 upload_tmp_dir 并将值设置为 php.ini 中的“C:/larragon/tmp” (6认同)
  • 这个答案解决了我的 Laravel 版本 10 的问题 (2认同)