【发布时间】:2012-05-09 05:45:15
【问题描述】:
我希望获得我正在上传的图像的文件扩展名,但我只是得到一个数组。
$userfile_name = $_FILES['image']['name'];
$userfile_extn = explode(".", strtolower($_FILES['image']['name']));
有没有办法只获取扩展本身?
【问题讨论】:
标签: php file-extension
我希望获得我正在上传的图像的文件扩展名,但我只是得到一个数组。
$userfile_name = $_FILES['image']['name'];
$userfile_extn = explode(".", strtolower($_FILES['image']['name']));
有没有办法只获取扩展本身?
【问题讨论】:
标签: php file-extension
无需使用字符串函数。您可以使用实际为您想要的东西设计的东西:pathinfo():
$path = $_FILES['image']['name'];
$ext = pathinfo($path, PATHINFO_EXTENSION);
【讨论】:
image[]...
这也可以:
$array = explode('.', $_FILES['image']['name']);
$extension = end($array);
【讨论】:
end 函数旨在将数组的内部指针移动到数组的末尾并返回该元素。问题是数组是通过引用传递的,由于你的数组是动态生成的,它不能通过引用传递,因此警告或失败,取决于你的 PHP 版本。
/var/www/website.com/somefile(最好使用 pathinfo)。
更好的方法是使用 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
【讨论】:
pathinfo()好吗?我不这么认为。
/var/www/website.com/somefile。
mime_content_type 在当前 PHP 版本中已弃用。
你可以试试这个 mime 类型
$image = getimagesize($_FILES['image']['tmp_name']);
$image['mime'] 将返回 mime 类型。
此函数不需要 GD 库。你可以找到文档here。
这将返回图像的 MIME 类型。
有些人使用$_FILES["file"]["type"],但它并不可靠,因为浏览器给出的而不是 PHP 给出的。
您可以按照 ThiefMaster 的建议使用 pathinfo() 来检索图像扩展名。
在对图像执行任何操作之前,首先确保图像在开发过程中已成功上传。
【讨论】:
怎么样
$ext = array_pop($userfile_extn);
【讨论】: