首页 > 解决方案 > 如何从laravel中的不同字段上传多个文件

问题描述

当我尝试下面的脚本时,如何从laravel中的不同字段上传多个文件,只上传一个文件,而不是所有文件都上传到数据库

public function store(Request $request)
{
    $request->validate([
        'id_satker' => ['required', 'string', 'max:255'],
        'dipa' => 'required|mimes:pdf,xlx,csv,rar,xlsx,docx,doc,xlsb,pptx,ppt,jpg,png,jpeg|max:3000',
        'sk' => 'required|mimes:pdf,xlx,csv,rar,xlsx,docx,doc,xlsb,pptx,ppt,jpg,png,jpeg|max:3000',
        'lms1' => ['required', 'string', 'max:255'],
        'lms2' => ['required', 'string', 'max:255'],
        'las1' => ['required', 'string', 'max:255'],
        'las2' => ['required', 'string', 'max:255'],
    ]);

    //upload
    $namafiledipa = time().'.'.$request->file('dipa')->extension();
    $namafilesk = time().'.'.$request->file('sk')->extension();
    $dipa = $request->file('dipa')->storeAs('public/uploads/inputans', $namafiledipa);
    $sk = $request->file('sk')->storeAs('public/uploads/inputans', $namafilesk);


    $inputans = Inputan::create([
        'id_satker' => $request->id_satker,
        'dipa' => $namafiledipa,
        'sk' => $namafilesk,
        'lms2' => $request->lms2,
        'las1' => $request->las1,
        'las2' => $request->las2,
    ]);

    return redirect('inputan')->with('success', 'Selamat data berhasil ditambah!');
}

标签: laravellaravel-6

解决方案


您不需要使用time(),它可以具有相同的值。这将替换您的第一个文件$namafiledipa

$a = time(); // 1581065644
$b = time(); // 1581065644

dd($a, $b);

Laravel 会自动为文件名生成一个唯一的 ID。

try {
    $namafiledipa = $request->file('dipa')->store();
    $namafilesk   = $request->file('sk')->store();
    $inputans     = Inputan::create([
        'id_satker' => $request->id_satker,
        'dipa'      => $namafiledipa,
        'sk'        => $namafilesk,
        'lms2'      => $request->lms2,
        'las1'      => $request->las1,
        'las2'      => $request->las2,
    ]);

    return redirect('inputan')
        ->with('success', 'Selamat data berhasil ditambah!');
} catch (\Exception $e) {
    dd($e);
}

try-catch出现问题时可以为您提供帮助。


推荐阅读