UploadedFile 的 extension() 方法对 .ob j 后缀的文件会返回 .txt
1. 运行环境
homestead 集成环境
1). 当前使用的 Laravel 版本?
Laravel Framework 8.83.15
2). 当前使用的 php/php-fpm 版本?
PHP 版本:
PHP 8.0.9 (cli) (built: Jul 30 2021 13:03:39) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.9, Copyright (c) Zend Technologies
with Zend OPcache v8.0.9, Copyright (c), by Zend Technologies
php-fpm 版本:
phpinfo()
PHP Version => 8.0.9
3). 当前系统
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.2 LTS
Release: 20.04
Codename: focal
4). 业务环境
开发环境
5). 相关软件版本
无
2. 问题描述?
return RespondUtil::successRespond([
$request->file->getClientOriginalName(),
$request->file->extension()]
);
3. 您期望得到的结果?
// 当我把 extension() 替换成 pathinfo() 是没问题的.
return RespondUtil::successRespond([
$request->file->getClientOriginalName(),
pathinfo($request->file->getClientOriginalName(), PATHINFO_EXTENSION)
]);
这个倒是挺稀奇的,解析为txt 是有点奇怪
直接用
getClientOriginalExtension()
获取后缀扩展extension()
会根据文件内容去“猜测”扩展名。而不是单纯从文件名中获取。UploadedFile 的
extension()
实际上是调用guessExtension()
是根据文件的mimeType去判断的文件后缀。 而getClientOriginalExtension()
则是使用pathinfo()
相当于截取的文件后缀。