如何在不使用guessExtension()的情况下获取上传的图像文件格式?

时间:2014-10-01 21:14:26

标签: php symfony laravel laravel-4

我有一个在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(或其他类似的东西)的随机情况,所以我对获取文件犹豫不决格式化这种方式。谁能想到更好的方法来做到这一点?

2 个答案:

答案 0 :(得分:0)

你可以用substr。

来做

You can try $ext = substr($filename,-4);

答案 1 :(得分:-1)

也许试试:

Input::file('image')->getClientMimeType();

Input::file('image')->getMimeType();