2012-04-22 70 views
0

我在webby上找到了一个免费的图片上传脚本,但它只允许JPG/JPEG格式。PHP - 多图像上传,如何允许多种格式?

如何允许它上传格式PNG和BMP?

for($i=0;$i<count($_FILES["fileUpload"]["name"]);$i++) 
{ 
    if(trim($_FILES["fileUpload"]["tmp_name"][$i]) != "") 
    { 
     $images = $_FILES["fileUpload"]["tmp_name"][$i]; 
     $new_images = "thumbnails_".$_FILES["fileUpload"]["name"][$i]; 
     copy($_FILES["fileUpload"]["tmp_name"][$i],"PIC_FOLDER".$_FILES["fileUpload"]["name"][$i]); 
     $width=100; //*** Fix Width & Heigh (Autu caculate) ***// 
     $size = GetimageSize($images); 
     $height = round($width*$size[1]/$size[0]); 
     $images_orig = ImageCreateFromJPEG($images); 
     $photoX = ImagesX($images_orig); 
     $photoY = ImagesY($images_orig); 
     $images_fin = ImageCreateTrueColor($width, $height); 
     ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, $height+1, $photoX, $photoY); 
     ImageJPEG($images_fin,"PIC_FOLDER".$new_images); 
     ImageDestroy($images_orig); 
     ImageDestroy($images_fin); 

     echo "Resize Successful.<br>"; 
    } 
} 

在此先感谢

+0

现在你的代码会上传几乎任何文件。然后它会尝试创建缩略图,并将该缩略图存储为jpeg。我强烈建议使用不同于此的东西。 – tcole 2012-04-22 17:52:02

回答

0

正如评论说,你已经能够上传任何类型,但你需要它是JPEG,能够使缩略图。根本就对类型的检查,然后用它来打开图像

$src= $images; 
    $image_info = @getimagesize($src); 
    list($imgwidth,$imgheight,$image_type) = $image_info; 
    if($image_type == IMAGETYPE_JPEG) { 
     $images_orig = @imagecreatefromjpeg($src); 
    } else if($image_type == IMAGETYPE_GIF) { 
     $images_orig = @imagecreatefromgif($src); 
    } else if($image_type == IMAGETYPE_PNG) { 
     $images_orig = @imagecreatefrompng($src); 
    } else if($image_type == IMAGETYPE_BMP) { 
     $images_orig = @imagecreatefrombmp($src); 
    } 

只是使用而不是$ images_orig = ImageCreateFromJPEG($图片)这一点;

如果您还想以任何格式将图像保存回来,请在底部执行类似检查而不是ImageJPEG($ images_fin,“PIC_FOLDER”。$ new_images);

+0

谢谢,为我工作..是否有无论如何,我可以检查图像,是否真的是一个图像,只允许在窗体浏览中找到图像? – 2012-04-22 18:19:58

+0

嗯,我认为getimagesize会迟钝,如果交了一个exe文件或其他东西,但只是为了安全也许还检查[mime_content_type](http://de3.php.net/manual/en/function.mime-content-type.php )虽然MIME类型可以伪造。 – hackartist 2012-04-23 00:44:14

+0

谢谢,生病了试试看 – 2012-04-23 10:42:38