未定义的索引:PHP中文件夹的扩展名

时间:2016-03-17 15:46:44

标签: php undefined

我希望有一个脚本可以将我的所有图像转换为缩略图并将这些新缩略图保存在新文件夹中。 我很运气,发现了一个几乎完美的代码 http://webcheatsheet.com/php/create_thumbnail_images.php

唯一的问题是,如果"上传" -folder(在代码末尾定义)中有一个文件夹,那么我会得到"注意:未定义的索引:扩展名&#34 ;。 代码没有卡住,我仍然得到我的缩略图,但错误信息很烦人。

我试图输入一个isset-function,但做错了,因为我仍然没有设法阻止脚本对文件夹进行操作。代码对任何其他文件都没有类似的反应,所以似乎缺少一个困扰代码的文件夹名称的扩展名。

我能够轻松简单地删除"上传" -folder中的所有文件夹并放置缩略图'在其他地方的路径,但我也想让它在没有错误消息的情况下工作,以防我碰巧在这些图像文件夹中有文件夹。

// parse path for the extension
$info = pathinfo($pathToImages . $fname);
// continue only if this is a JPEG image    
//print_r($info);   
if ( strtolower($info['extension']) == 'jpg' ) { // reacts on the folder with no extension name and gives an error

  echo "Creating thumbnail for {$fname} <br />";      

  // load image and get image size
  $img = imagecreatefromjpeg( "{$pathToImages}{$fname}" );
  $width = imagesx( $img );
  $height = imagesy( $img );

  // calculate thumbnail size
  $new_width = $thumbWidth;
  $new_height = floor( $height * ( $thumbWidth / $width ) );

  // create a new temporary image
  $tmp_img = imagecreatetruecolor( $new_width, $new_height );

  // copy and resize old image into new image 
  imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height );

  // save thumbnail into a file
  imagejpeg( $tmp_img, "{$pathToThumbs}{$fname}" );
}

}

上面链接中的完整代码。

1 个答案:

答案 0 :(得分:4)

pathinfo docs解释:

  

注意:

     

如果路径没有扩展名,则不会有扩展名元素   返回

因此,为了避免通知,您只需在尝试使用它之前检查该值是否可用:

if( isset($info['extension']) AND strtolower($info['extension']) == 'jpg'){
    //do sutff
}

或者代替isset(...),您可以使用array_keys_exists('extension', $info)