【问题标题】:Laravel 5.1 multiple images move() issueLaravel 5.1 多张图片 move() 问题
【发布时间】:2015-11-27 19:44:08
【问题描述】:

我有以下控制器代码,它应该将所有五个图像移动到uploads 目录但它只移动一个图像。

控制器:

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循环。

【问题讨论】:

    标签: php image laravel laravel-5.1


    【解决方案1】:

    这是因为对于所有五个图像,文件名都相同,因为执行速度如此之快,以至于 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');
    
       }
    }
    

    这样,如果文件不存在,您将不会存储文件名。

    【讨论】:

    • 是的,我觉得它看起来不错,但请阅读上面的建议 :)
    • 兄弟,上面的代码连一张图片都没有上传!错误是:The file "13-512.png" was not uploaded due to an unknown error.
    • 哦,我忘记了文件名中的$k
    • 我已经编辑了帖子,试试看。但是您在这里得到了正确的概念,循环并获取原始文件名。可能有一些错误,请尝试修复它们。
    【解决方案2】:

    试试这段代码,你会发现问题:

    for ($i = 0; $i<=5; $i++) {
        echo time() . PHP_EOL;
    }
    

    由于所有这些都发生得非常快,因此您用于文件名的time() 返回的值对于每次迭代总是相同的。 尝试生成一个伪唯一的文件名,例如:

    foreach ($pic as $file){
       if(!empty($file)){
         $file->move(public_path() . '/uploads/', md5(mt_rand(0,time())) . '-' . 'laptop');
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 2019-11-18
      • 1970-01-01
      • 2015-04-14
      • 2019-09-05
      • 2018-04-28
      相关资源
      最近更新 更多