【发布时间】:2026-01-07 04:20:08
【问题描述】:
我有一个在 PHP 5.3.28 上运行的 laravel 4.1 项目,我试图找到一种方法来从某个图像中获取文件扩展名,但每当我使用 guessExtension() 时都会失败:
$format = Input::file('image')->guessExtension();
我尝试上传的所有其他图片使用guessExtension() 都没有问题,但似乎 Symphony 无法识别此特定图片的mimeType:
object(Symfony\Component\HttpFoundation\File\UploadedFile)[9]
private 'test' => boolean false
private 'originalName' => string 'herewithme.png' (length=14)
private 'mimeType' => string 'application/octet-stream' (length=24)
private 'size' => int 0
private 'error' => int 1
我的应用程序失败并显示以下消息:
The file "" does not exist
我正在考虑做类似this:
$filename = Input::file('image')->getClientOriginalName();
if(strpos($filename, '.png') !== false)
{
$format = 'png';
}
elseif(strpos($filename, '.jpg') !== false)
{
$format = 'jpg';
}
但是,我担心文件可能会因命名为pdf.png.jpg(或类似的名称)而导致问题,所以我对以这种方式获取文件格式犹豫不决。谁能想到更好的方法来做到这一点?
【问题讨论】:
-
也许只是在上传的文件上调用 Linux/Unix
file命令? -
获取扩展名
$ext = pathinfo($filename, PATHINFO_EXTENSION);,但这并不能解决您的问题。我不知道 Laravel 的内部结构,但有可能达到最大上传文件大小,在 php.ini 中设置,可能是这个原因。同样在您的 var_dump 中有private 'error' => int 1您可以在该类对象上获得错误消息或类似内容
标签: php symfony laravel laravel-4