【问题标题】:PHP - Multiple image Upload, how to allow more than one format?PHP - 多张图片上传,如何允许多种格式?
【发布时间】:2012-04-23 02:04:31
【问题描述】:

我在webby上找到了一个免费的图片上传脚本,但它只允许JPG/JPEG格式。

如何让它上传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>";
    }  
}  

提前致谢

【问题讨论】:

  • 现在您的代码几乎可以上传任何文件。然后它会尝试创建一个缩略图,并将该缩略图存储为 jpeg。我强烈建议使用与此不同的东西。

标签: php image upload image-formats


【解决方案1】:

正如评论所说,您已经能够上传任何类型,但您需要它是 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($images);

如果您还想以任何格式保存图像,请在底部进行类似检查,而不是 ImageJPEG($images_fin,"PIC_FOLDER".$new_images);

【讨论】:

  • 谢谢,为我工作.. 无论如何我可以检查图像是否真的是图像,只允许从表单中的浏览中找到图像?
  • 好吧,我认为 getimagesize 如果交给一个 exe 文件或其他东西会拒绝,但为了安全起见,也许还检查mime_content_type 尽管 MIME 类型可以伪造。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 2016-04-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多