Laravel 5.1文件上传,File的文件名和数据库名称相同

时间:2015-11-29 16:11:07

标签: php laravel laravel-5.1

我的控制器代码,我将文件名存储到数据库表中,并将文件移动到文件夹中。

问题是我将文件的原始名称存储在数据库表中,相反,我正在使用uniqueid()和time()移动文件。它将来会出现问题。因为在数据库表文件名和移动的文件中有不同的名称。

if(Input::hasFile('profile_pic')){
            $pic = Input::file('profile_pic');
            $mobile->photo1 = $pic[0]->getClientOriginalName();
            $mobile->photo2 = $pic[1]->getClientOriginalName();
            $mobile->photo3 = $pic[2]->getClientOriginalName();
            $mobile->photo4 = $pic[3]->getClientOriginalName();
            $mobile->photo5 = $pic[4]->getClientOriginalName();
                foreach ($pic as $k=>$file){
                    if(!empty($file)){
                        $file->move(public_path() . '/uploads/', time() . uniqid() . '-' . $k . '-laptop');
                    }
                }
        }

2 个答案:

答案 0 :(得分:0)

您可以在数据库中存储这两个名称。例如,将{1}存储为original_name,将其存储为generated_name

如果要让用户下载,可以通过从数据库中检索文件来为文件提供原始名称。它应该是这样的:

$photo = Photo::find(1);
return response()->download($photo->generated_filename, $photo->filename);

答案 1 :(得分:0)

您可以尝试使用类似的东西:

if(Input::hasFile('profile_pic')){
    $pic = Input::file('profile_pic');
    foreach ($pic as $k=>$file){
        if(!empty($file)){
            $temp = $k+1;
            $mobile->photo.$temp = time() . uniqid() . '-' . $k . '-laptop';
            $file->move(public_path() . '/uploads/', $mobile->photo.$temp);
        }
    }
}
相关问题