Laravel多次编辑/上传文件

1u4esq0p  于 2022-12-27  发布在  其他
关注(0)|答案(1)|浏览(160)

我想让我的代码在我的控制器更有效。这段代码是关于更新数据库中的文件,然后删除所选择的文件,而不是使用条件,我将使用开关语句,然后调用updateFile函数的每一种情况下的文件名。但我有问题,我的开关语句,它应该运行的每一种情况下,但没有。

private function updateFile($strFileName, $oldFileName){
        if($request->file($strFileName)){
            if($request->$oldFIleName){
                Storage::delete($request->$oldFIleName);
            }
            $validatedData[$strFileName] = $request->file($strFileName)->store('post-files');
        }
    }

 public function update(Request $request, Task $task)
    {   
        //storing files request
        $rules = [
            'file_jamlak' => 'mimes:pdf,png,jpg|file|max:4096',
            'file_kontrak' => 'mimes:pdf,png,jpg|file|max:4096',
            'file_jamuk' => 'mimes:pdf,png,jpg|file|max:4096']

        //validate rules in to new variable
        $validatedData = $request->validate($rules);
        
        //the switch
        $file_name = $request->file();
         switch($file_name){
            case 'file_jamlak' : $this->updateFile('file_jamlak', 'oldJamlak');
         }
 
       //condition
       //jamlak
        if($request->file('file_jamlak')){
            if($request->oldJamlak){
                Storage::delete($request->oldJamlak);
                // return $request->oldJamlak;
            }
            $validatedData['file_jamlak'] = $request->file('file_jamlak')->store('post-files');
            $validatedData['jamlak'] = 1;
        }

        //kontrak
        if($request->file('file_kontrak')){
            if($request->oldKontrak){
                Storage::delete($request->oldKontrak);
            }
            $validatedData['file_kontrak'] = $request->file('file_kontrak')->store('post-files');
            $validatedData['kontrak'] = 1;
        }

       //add user id
        $validatedData['user_id'] = auth()->user()->id;

        //update eloquent
        Task::where('id', $task->id)
        ->update($validatedData);
        
        //dd($file_name);
        return redirect('/admin/tasks')->with('success', 'New post has been updated!');

}

我想我犯了错误的$file_name,它应该存储文件名,但不工作.请帮助我

bf1o4zei

bf1o4zei1#

确保您的案例中有您要检查的文件名:

// ... 

//the switch
$file_name = $request->file();
switch($file_name){
    // make sure this name matches the name of the file you are submitting
    // from the form on front end to be able to fall into this case
    case 'file_jamlak' : $this->updateFile('file_jamlak', 'oldJamlak');
// ...

相关问题