在PHP中获取上传文件扩展名的最佳方法/实践是啥[重复]

Posted

技术标签:

【中文标题】在PHP中获取上传文件扩展名的最佳方法/实践是啥[重复]【英文标题】:What's the best way/practice to get the extension of a uploaded file in PHP [duplicate]在PHP中获取上传文件扩展名的最佳方法/实践是什么[重复] 【发布时间】:2011-06-03 06:06:15 【问题描述】:

我有一个允许用户上传文件的表单,但是我需要获得我能够获得的文件扩展名,但不确定我是否使用了最有效的解决方案

我可以通过以下方式获得它

$fileInfo = pathinfo($_FILES['File']['name']);
echo $fileInfo['extension'];

$ext = end(explode('.',$_FILES['File']['name']));
echo $ext;

哪种方法最好使用,或者是否有更好的解决方案可以获得扩展?

【问题讨论】:

【参考方案1】:

pathinfo($_FILES['File']['name'], PATHINFO_EXTENSION)

尽可能使用内置函数(同时@Sarfraz 所说的), 仅提取所需信息 (options = PATHINFO_EXTENSION)

【讨论】:

但不要相信输入!不允许执行上传的文件,最好将上传的文件移到DocumentRoot之外,这样即使是可执行的,用户也找不到。【参考方案2】:

更好的方法 - fileinfo extension with php >=5.3

PS:不信任文件扩展名,任何用户都可以任意重命名文件扩展名

【讨论】:

很好的解决方案,但对我来说这行不通,因为我的开发环境当前运行的是 PHP 5.1.6 @Roland - 抛弃 5.1.* ,甚至不再支持 5.2.* ...是时候寻找 5.3 了,但有时升级太麻烦了 我同意你的观点,但很遗憾我不是机器的所有者,否则我会升级。【参考方案3】:

第一个(使用pathinfo)更好,原因很明显。使用内置函数实现功能,而不是重新创建它:)

【讨论】:

以上是关于在PHP中获取上传文件扩展名的最佳方法/实践是啥[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 创建单文件上传表单的最佳方法是啥?

在批处理文件中执行子字符串的最佳方法是啥?

在 CloudKit 中获取 CKReferences 的最佳实践方法是啥?

CakePHP 上传文件的最佳实践

上传文件PHP时生成唯一文件名的最佳方法[重复]

在graphql中处理文件上传的最佳方法是啥?