2012-04-28 57 views

回答

985

无需使用字符串函数。您可以使用的东西,实际上是专门为你想要的东西:pathinfo()

$path = $_FILES['image']['name']; 
$ext = pathinfo($path, PATHINFO_EXTENSION); 
+0

$ path = $ _FILES ['image'] ['name'] [0];实际的文件名是在一个数组中。 pathinfo只会评估一个字符串。 – foureight84 2013-12-04 22:36:09

+8

@ foureight84:只有这样,如果你有上传字段名为'图像[]'... – ThiefMaster 2013-12-04 23:42:23

+2

我有点修改你的代码一点点,并做了一个函数,以防有人想使用一个函数。这里是代码:function getFileExtension($ path){$ {$ ext = pathinfo($ path,PATHINFO_EXTENSION); return $ ext; } – 2014-12-05 14:56:26

12

如何

$ext = array_pop($userfile_extn); 
+7

这是一个可爱的功能:P – Michelle 2012-04-28 22:58:50

+2

我不建议这样做。从现在开始,你依赖于阵列的顺序。这是一个懒惰的解决方案,很可能会在将来导致问题。 – 2016-07-29 20:14:56

25

更好的方法是使用strrpos + SUBSTR(快于爆炸为):

$userfile_name = $_FILES['image']['name']; 
$userfile_extn = substr($userfile_name, strrpos($userfile_name, '.')+1); 

但是,检查类型一个文件,使用mime_content_type是一个更好的办法: http://www.php.net/manual/en/function.mime-content-type.php

+3

比'pathinfo()'更好吗?我不这么认为。 – ThiefMaster 2012-04-28 22:53:00

+1

比爆炸更好;-)。但是,你说得对,pathinfo是启用时更好的方式(某些相互服务器禁用此功能...)。 – Julien 2012-04-28 22:56:05

+10

**重要说明**:这将失败,路径如下:'/ var/www/website.com/somefile'。 – brianreavis 2013-11-27 21:31:54

20

你可以用这个尝试MIME类型

$image = getimagesize($_FILES['image']['tmp_name']); 

$image['mime']将返回mime类型。

该函数不需要GD库。你可以找到文档here

这将返回图像的MIME类型。

有些人使用$_FILES["file"]["type"],但它不像浏览器给出的那样可靠,而不是PHP给出的。

您可以使用pathinfo()作为ThiefMaster建议检索图像扩展名。

首先确保图像在开发过程中成功上传,然后再对图像执行任何操作。

45

这也能发挥作用:

$array = explode('.', $_FILES['image']['name']); 
$extension = end($array); 
+17

'只有变量应该通过引用传递',PHP手册 – dader 2012-12-20 02:01:44

+1

这不是一个好方法,因为'end'函数用于将数组的内部指针移动到数组的末尾并返回那个元素。问题是数组是通过引用传递的,因为数组是动态生成的,所以不能通过引用传递,因此警告或失败,这取决于您的PHP版本。 – SteveK 2013-05-19 02:27:03

+25

**重要说明**:这将失败,路径如下:'/ var/www/website.com/somefile'(最好使用pathinfo)。 – brianreavis 2013-11-27 21:30:59

相关问题