php加入到jpg,php – 上传JPG但不上传jpg

我有一个代码块,只要扩展名为小写jpg,就可以上传图像并创建缩略图,但如果图像是大写的JPG,则不会上传图像.当我重命名图像时,例如example.JPG到example.jpg,它会上传.但是example.JPG不会上传,我没有错误.这对我没有任何意义.有没有人对此有解释?这是我的代码:

function createThumbnail($filename) {

require 'config.php';

if(preg_match('/[.](jpg)$/', $filename)) {

$im = imagecreatefromjpeg($filename.$path_to_image_directory);

} else if (preg_match('/[.](gif)$/', $filename)) {

$im = imagecreatefromgif($path_to_image_directory . $filename);

} else if (preg_match('/[.](png)$/', $filename)) {

$im = imagecreatefrompng($path_to_image_directory . $filename);

}

$ox = imagesx($im);

$oy = imagesy($im);

$nx = $final_width_of_image;

$ny = $final_height_of_image;

$nm = imagecreatetruecolor($nx, $ny);

imagecopyresampled($nm, $im, 0,0,0,0,$nx,$ny,$ox,$oy);

if(!file_exists($path_to_thumbs_directory)) {

if(!mkdir($path_to_thumbs_directory)) {

die("There was a problem. Please try again!");

}

}

imagejpeg($nm, $path_to_thumbs_directory . $filename);

$tn = 'image';

$tn .= '
Congratulations. Your file has been successfully uploaded, and a thumbnail has been created.';

echo $tn;

}

?>

配置文件:

$final_width_of_image = 300;

$final_height_of_image = 300;

$path_to_image_directory = '';

$path_to_thumbs_directory = '-tn';

?>

解决方法:

在此代码块中,您只允许使用小写文件扩展名:

if(preg_match('/[.](jpg)$/', $filename)) {

//--lowercase-only--^

$im = imagecreatefromjpeg($filename.$path_to_image_directory);

}else if (preg_match('/[.](gif)$/', $filename)) {

$im = imagecreatefromgif($path_to_image_directory . $filename);

} else if (preg_match('/[.](png)$/', $filename)) {

$im = imagecreatefrompng($path_to_image_directory . $filename);

}

您可以通过在正则表达式中放置一个OR condition来修复:

if(preg_match('/[.](jpg|JPG)$/', $filename)) {

// -----uppercase-------^

$im = imagecreatefromjpeg($filename.$path_to_image_directory);

}else if (preg_match('/[.](gif|GIF)$/', $filename)) {

$im = imagecreatefromgif($path_to_image_directory . $filename);

} else if (preg_match('/[.](png|PNG)$/', $filename)) {

$im = imagecreatefrompng($path_to_image_directory . $filename);

}

或者您可以使用i修饰符添加不区分大小写:

if(preg_match('/[.](jpg)$/i', $filename)) {

// -------modifier--------^

$im = imagecreatefromjpeg($filename.$path_to_image_directory);

}else if (preg_match('/[.](gif)$/i', $filename)) {

$im = imagecreatefromgif($path_to_image_directory . $filename);

} else if (preg_match('/[.](png)$/i', $filename)) {

$im = imagecreatefrompng($path_to_image_directory . $filename);

}

来源:http://www.icode9.com/content-1-197501.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值