使用 laravel 上传文件

upload file with laravel

我正在尝试使用 laravel 将一个文件上传到 storage/app,我正在检查我的文件夹是否存在:

if(isset($request->file_job)){
            $pathFolder = storage_path('app/contratos/'.$tarea->contratoTrey->serie->SERIE.'-'.$tarea->contratoTrey->N_CONTRATO.'/tareas/T-'.$tarea->ntarea);
           
            if(!\File::exists($pathFolder)) {
                \File::makeDirectory($pathFolder, 0755, true, true);
            }


            $filePath = 'app/contratos/'.$tarea->contratoTrey->serie->SERIE.'-'.$tarea->contratoTrey->N_CONTRATO.'/tareas/T-'.$tarea->ntarea;
            \Storage::disk('local')->put($filePath, $request->file_job);
        }

如果不存在我正在构建我的结构文件夹并将我的文件放在这个文件夹中。

我的问题是在我的数据库中,我用 getClientOriginalName() 插入了我的文件名,但在这条路线中

'app/contratos/'.$tarea->contratoTrey->serie->SERIE

我的应用程序是构建一个文件,而不是目录,在这个目录中我的文件使用他的原始名称...

我不知道我做错了..我试过用这个名字创建一个新变量并保存...同样的错误或问题...

更新

\Storage::disk('local')->putFileAs($filePath, $request->file_job, ($request->file_job)->getClientOriginalName());

感谢自述文件并帮助我。抱歉我的英语不好

问题可能是您使用的是 put 而不是 putFileAs。您可以在 https://laravel.com/docs/9.x/filesystem#specifying-a-file-name 中找到文档,而不是:

\Storage::disk('local')->put($filePath, $request->file_job);

你应该:

\Storage::disk('local')->putFileAs($filePath, $request->file_job, ($request->file_job)->getClientOriginalName());