495

我希望获得我正在上传的图像的文件扩展名,但我只是得到一个数组。

$userfile_name = $_FILES['image']['name'];
$userfile_extn = explode(".", strtolower($_FILES['image']['name']));

有没有办法只获得扩展本身?

4

5 回答 5

1292

无需使用字符串函数。您可以使用实际为您想要的东西设计的东西pathinfo()

$path = $_FILES['image']['name'];
$ext = pathinfo($path, PATHINFO_EXTENSION);
于 2012-04-28T22:48:44.817 回答
65

这也将起作用:

$array = explode('.', $_FILES['image']['name']);
$extension = end($array);
于 2012-08-22T20:26:17.567 回答
34

更好的方法是使用 strrpos + substr (比explode更快):

$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

于 2012-04-28T22:52:03.110 回答
24

你可以试试这个 mime 类型

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

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

此函数不需要 GD 库。您可以在此处找到文档。

这将返回图像的 mime 类型。

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

您可以pathinfo()按照 ThiefMaster 的建议使用来检索图像扩展名。

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

于 2012-04-28T23:06:00.547 回答
12

怎么样

$ext = array_pop($userfile_extn);
于 2012-04-28T22:48:33.717 回答