首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上传JPG,但不上传jpg

上传JPG,但不上传jpg
EN

Stack Overflow用户
提问于 2016-02-16 21:01:08
回答 2查看 476关注 0票数 5

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

代码语言:javascript
复制
<?php
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 = '<img src="' . $path_to_thumbs_directory . $filename . '" alt="image" />';
  $tn .= '<br />Congratulations. Your file has been successfully uploaded, and a      thumbnail has been created.';
  echo $tn;
}
?>

配置文件:

代码语言:javascript
复制
<?php  
$final_width_of_image = 300;
$final_height_of_image = 300;
$path_to_image_directory = '';
$path_to_thumbs_directory = '-tn';
?>     
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-16 21:04:55

在这个代码块中,您只允许小写文件扩展名:

代码语言:javascript
复制
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);
}

您可以通过在regex中放置一个或条件来修复:

代码语言:javascript
复制
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修饰符添加不区分大小写:

代码语言:javascript
复制
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);
}
票数 4
EN

Stack Overflow用户

发布于 2016-02-16 21:48:32

更好的方法是检查文件本身,而不是扩展名,这可能总是错误的。

代码语言:javascript
复制
    $data = getimagesize($filename);
    switch($data['mime]){
        case('image/png):
            $im = imagecreatefrompng($filename);
            break;
        case('img/jpg'):
        case('image/jpeg'):
        case('image/pjpeg'):
        case('image/x-jps'):
            $im = imagecreatefromjpeg($filename);
            break;
        case(self::GIF):
            $im = imagecreatefromgif($filename);
            break;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35442892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档