停留在上传不同扩展名的图像在PHP [英] stuck at uploading images of different extensions in php

查看:84
本文介绍了停留在上传不同扩展名的图像在PHP的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在上传.png和.bmp扩展名时遇到麻烦,而其他扩展名工作正常

I have trouble uploading .png and .bmp extensions while other extensions work fine

$allowed_types = array(".gif" , ".jpg" , ".jpeg", ".png" , ".bmp");
$fname = $_FILES["file"]["name"];
$f_ext = substr($fname, strripos($fname, '.'));
$f_size = $_FILES["file"]["size"];

if (in_array($f_ext,$allowed_types) && ($f_size < 50000))
    {   
        // upload
    } else { 
        //error

我只是不知道我在做什么错. Jpg可以使用,gif可以使用,jpeg可以使用,但是png和bmp不能使用.

I just can't figure out what I'm doing wrong here. Jpg works, gif works, jpeg works, but png and bmp won't.

推荐答案

尝试一下.我的第一反应是有点草率.我总是在扩展名检查中排除点.

Try this. My first response was a bit hasty. I always exclude the dot in my extension checks.

$allowed_types = array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/jpg', 'image/png', 'image/x-png', 'image/bmp', 'image/x-windows-bmp'); 
$allowed_exts = array('gif', 'jpeg', 'jpg', 'png', 'bmp'); 

$img_info = @getimagesize($_FILES['file']['tmp_name']); 
$f_type = image_type_to_mime_type($img_info[2]); // file type
$f_ext = strtolower(substr(strrchr($_FILES['file']['name'], '.'), 1)); // file extension
$f_size = $_FILES["file"]["size"];
$fname = $_FILES["file"]["name"];

IF ( (in_array($f_ext, $allowed_exts)) && (in_array($f_type, $allowed_types)) && ($f_size <= 50000) ) {  
    // upload

} else { 
    //error
    die('<pre>Error!<br>Size: '.$f_size.'<br>Extension: '.$f_ext.'<br>Mime: '.$f_type.'</pre>');
}

此外,MAX_FILE_SIZE必须在文件输入字段之前.还应将Php配置为允许文件大小.

Also, MAX_FILE_SIZE must precede the file input field. Php should be configured to allow the filesize as well.

这篇关于停留在上传不同扩展名的图像在PHP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆