我有以下 Controller 代码,它应该将所有五张图片移动到 uploads
目录,但它只移动了一张图片。
Controller :
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 $file){
if(!empty($file)){
$file->move(public_path() . '/uploads/', time() . '-' . 'laptop');
}
}
图像名称已成功存储在数据库表字段中。但是并非所有图像都移动到目标文件夹只有一个图像移动到文件夹,检查 foreach
循环。
最佳答案
这是因为对于所有五个图像,文件名都相同,因为执行速度如此之快,以至于 time() 返回相同的值。所以图像被覆盖了。你可以附加一些独特的字符串,比如
foreach ($pic as $k=>$file){
if(!empty($file)){
$file->move(public_path() . '/uploads/', time() . '-' . $k . '-laptop');
}
}
是的,代码对我来说看起来不错,但是你可以循环执行五次,而不是获取文件名
$pic = Input::file('profile_pic');
foreach ($pic as $k => $file){
if(!empty($file)){
$mobile->{"photo".$k+1} = $pic[$k]->getClientOriginalName();
$file->move(public_path() . '/uploads/', time() . '-' . $k. '-laptop');
}
}
这样,如果文件不存在,您也不会存储文件名。
关于php - Laravel 5.1 多个图像 move() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33956130/