在 PHP 中,如何获取文件扩展名名呢,我们可能会用字符串操作函数进行处理,但下面举的这些方法只是获取了用户的名字后面带.后面的后缀了并不能做安全验证.
比如如下代码:echo substr(strrchr($file_name,'.'),1);
或者如下代码:echo end(explode(".", $filename));
最正确的方法应该是使用 pathinfo 函数,如:
echo pathinfo($filename, PATHINFO_EXTENSION);
pathinfo 函数支持4种类型的返回:
PATHINFO_DIRNAME – 目录
PATHINFO_BASENAME – 文件名(含扩展名)
PATHINFO_EXTENSION – 扩展名
PATHINFO_FILENAME – 文件名(不含扩展名)
例子代码如下:
- function get_extension($filename){
- return pathinfo($filename,PATHINFO_EXTENSION);
- }
-
-
- <?php
- print_r(pathinfo("/testweb/test.txt"));
- ?>
-
- Array(
- [dirname] => /testweb
- [basename] => test.txt
- [extension] => txt
- )
如果要上传的用户最好要加以下面方法处理:
$extension=$upfile['type']; //这个是由upload上传过来的文件信息,代码如下:
- switch( $extension )
- {
- case 'application/msword':
- $extension ='doc';
- break;
- case 'application/vnd.ms-excel':
- $extension ='xls';
- break;
- case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':
- $extension ='docx';
- break;
- case 'application/vnd.ms-powerpoint':
- $extension ='ppt';
- break;
- case 'application/pdf':
- $extension ='pdf';
- break;
- case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':
- $extension ='xlsx';
- break;
- default:
- die('只允许上传doc,docx,xls,pdf,ppt文件 <a href="wend.php">重新上传</a>');
-
- }
|