我有一些错误,试图上传多个图像

时间:2014-05-17 21:25:01

标签: php

我试图第一次上传不只是1张图片,而是多张图片。

我正在尝试使用以下代码:

我的意见

<input type="file"  name="img[]" size="60" multiple="multiple"  accept="image/*" />

我要上传的代码:

$folder= '../images/';  
$year= date('Y');
$month= date('m');


if($_FILES['img']['tmp_name'])
{
   $count = count($_FILES['img']['tmp_name']);
   $img = $_FILES['img'];

   for($i=0;$i<=$count;$i++)
   {
    $ext = substr($img['name'][$i],-3);
    $image = $img['name'];
    $extAlllowed = array('image/jpeg','image/pjpeg','image/png','image/gif');

    if(in_array($img['type'][$i],$extAlllowed))
    {
       uploadImage($img['tmp_name'][$i],$image,'800',$folder.$year.'/'.$month.'/');
    }   
   }
}

但我有一些错误,但更重要的两个是:

substr()要求参数1为字符串,数组在 $ ext = substr($ name,-3)中给出;

注意:未定义的变量:img in $ x = imagesx($ img);

我上传的功能就是这个,我从来没有用它来进行多次上传,但它应该与 for 循环一起使用:

function uploadImage($tmp, $name, $width, $folder){
        $ext = substr($name,-3);

        switch($ext){
            case 'jpg': $img = imagecreatefromjpeg($tmp); break;
            case 'png': $img = imagecreatefrompng($tmp); break;
            case 'gif': $img = imagecreatefromgif($tmp); break; 
        }       
        $x = imagesx($img);
        $y = imagesy($img);
        $height = ($width*$y) / $x;
        $new_image   = imagecreatetruecolor($width, $height);

        imagealphablending($new_image,false);
        imagesavealpha($new_image,true);
        imagecopyresampled($new_image, $img, 0, 0, 0, 0, $width, $height, $x, $y);

        switch($ext){
            case 'jpg': imagejpeg($new_image, $folder.$name, 100); break;
            case 'png': imagepng($new_image, $folder.$name); break;
            case 'gif': imagegif($new_image, $folder.$name); break; 
        }
        imagedestroy($img);
        imagedestroy($new_image);
    }

1 个答案:

答案 0 :(得分:1)

尝试使用print_r($ _ FILES)打印出$ _FILES;功能。 $ _FILES的结构随多个文件而变化,这可能就是你的问题

您的第for($i=0;$i<=$count;$i++)行应为:

for($i=0;$i<$count;$i++)