我的控制器代码,其中我将文件名存储到数据库表中,并将文件移动到文件夹中。
问题是,我将文件的原始名称存储在数据库表中,相比之下,我使用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');
}
}
}
您可以尝试使用类似的东西:
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);
}
}
}
您可以将这两个名称存储在数据库中。例如,将一个存储为original_name
,另一个保存为generated_name
。
如果你想让用户下载,你可以通过从数据库中检索原始名称来提供文件
$photo = Photo::find(1);
return response()->download($photo->generated_filename, $photo->filename);