我正在尝试使用php上传多张照片。一切正常。但是问题是如果任何字段为空,则包含未上传图像的数组。
这是我的代码:
$count = 0;
foreach ($_FILES['myfile']['name'] as $key=>$filename){
$filename = $_FILES['myfile']['name'][$count];
$ext = pathinfo($filename, PATHINFO_EXTENSION);
// echo $ext;
// exit();
if($ext == "jpeg" || $ext == "jpg" || $ext == "png" || $ext == "gif"){
$filename = uploadfilename($filename);
$filename1=$iiid."blog".$filename;
$target_path = "../photo/";
$target_path = $target_path . repc($filename1);
move_uploaded_file($_FILES['myfile']['tmp_name'][$count], $target_path);
$dbfield = $count+1;
$sql="update product set img_".$dbfield." ='".rep($filename1)."' where id='".$iiid."'";
$result=mysql_query($sql);
$count++;
// header ("Content-type: image/jpeg");
// print_r(get_resource_type($uploadedImage));exit();
// $resizedImage = PIPHP_ImageResize($target_path,400,400);
$w = 400;
$h = 400;
list($width, $height) = getimagesize($target_path);
$info = getimagesize($target_path);
$mime = $info['mime'];
switch ($mime) {
case 'image/jpeg':
$source = ImageCreateFromJPEG($target_path);
$resized_img = ImageCreateTrueColor($w, $h);
ImageCopyResampled($resized_img, $source, 0, 0, 0, 0, $w, $h, $width, $height);
ImageJPEG($resized_img,$target_path);
ImageDestroy($resized_img);
break;
case 'image/png':
$source = ImageCreateFromPNG($target_path);
$resized_img = ImageCreateTrueColor($w, $h);
ImageCopyResampled($resized_img, $source, 0, 0, 0, 0, $w, $h, $width, $height);
ImagePNG($resized_img,$target_path);
ImageDestroy($resized_img);
break;
case 'image/gif':
$source = ImageCreateFromGIF($target_path);
$resized_img = ImageCreateTrueColor($w, $h);
ImageCopyResampled($resized_img, $source, 0, 0, 0, 0, $w, $h, $width, $height);
ImageGIF($resized_img,$target_path);
ImageDestroy($resized_img);
break;
default : echo "unknown file";
exit();
}
}
}
我正在使用输入类型文件发送图像。如果第一个索引元素为空而其他索引不为$ _FILES数组,则循环不起作用。请帮助
答案 0 :(得分:0)
您可以尝试的最简单的方法是,用try
/ catch
包围循环的每个迭代,这不需要您确切地发现代码中的问题所在。
这样,如果任何迭代由于抛出异常而失败,则不会阻止其余代码执行。
但是,您需要注意,在进行任何标记迭代之前都不会引发异常。在这里,您在迭代过程中遇到$count++;
杂记,如果在该行之前发生任何故障,您的代码将被卡住。 (无论如何,不要混用执行不同功能的代码是一种很好的风格;您应该在开始或结束时放置该行;在开始时使用try
/ catch
策略)
答案 1 :(得分:0)
当我从代码中删除(如果$ ext ==)条件时,它可以正常工作。
答案 2 :(得分:0)
由于第一个索引的值为空,因此代码不会进入if循环内,并且'$ count'的值不会递增。 因此,$ count的值始终为“ 0”。
尝试在if循环结束后放置“ $ count ++”。