php - Laravel 5.1 多个图像 move() 问题

标签 php image laravel laravel-5.1

我有以下 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/

相关文章:

php - 如何在 Laravel 5.2 中设置印度时间?

java - [Java-Opencv] : How convert an image from Cartesian space to Polar space?

php - 在 Laravel 5.1 中获取过滤和关联的记录

php - 通过Ajax调用PHP函数

php - 如何使用 PHP 解析具有多个根元素的 XML?

php - 来自mysql的分页数据表,自动刷新

php - 为什么我在使用 Laravel redis 集群时出现异常?

c++ - cvFindContours()异常?

php - PHP 输出的有效图像总是 "contain errors",这可能是什么原因造成的?

php - 在 Laravel 5.5 中通过路由名称获取 API URL