Laravel 5.1文件上传唯一名称

时间:2015-11-29 10:45:36

标签: php laravel laravel-5.1

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

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

我想要的是将文件名存储到数据库表中,并将文件移动到包含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');
                    }
                }
        }

1 个答案:

答案 0 :(得分:0)

您需要将目标路径存储到变量中,然后重复使用它来移动文件并将其值存储在数据库中

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)){
                    $destinationPath = public_path() . '/uploads/', time() . uniqid() . '-' . $k . '-laptop';
                    $file->move($destinationPath);
                    // and you may store the path here to the database
                    // like yourObject->filePath = $destinationPath;
                    // yourObject->save();
                }
            }
    }