我试图第一次上传不只是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);
}
答案 0 :(得分:1)
尝试使用print_r($ _ FILES)打印出$ _FILES;功能。 $ _FILES的结构随多个文件而变化,这可能就是你的问题
您的第for($i=0;$i<=$count;$i++)
行应为:
for($i=0;$i<$count;$i++)