Laravel干预图像没有返回扩展名

时间:2014-04-21 14:31:17

标签: image file-upload laravel

当我尝试使用具有laravel的介入图像库保存图像时,它可以正常工作,但是扩展名丢失了。

当我死掉并转储Image :: make()方法的输出时,我得到了这个:

  object(Intervention\Image\Image)[304]
  public 'resource' => resource(9, gd)
  public 'type' => int 2
  public 'width' => int 480
  public 'height' => int 640
  public 'dirname' => string '/tmp' (length=4)
  public 'basename' => string 'phpJHlKbK' (length=9)
  public 'extension' => null
  public 'filename' => string 'phpJHlKbK' (length=9)
  public 'mime' => string 'image/jpeg' (length=10)
  protected 'original' => null
  public 'encoded' => null

正在上传的文件有一个扩展名但我无法访问它,因为它认为一个文件不存在。有什么想法吗?

2 个答案:

答案 0 :(得分:8)

介入影像医生说:

The current filename extension of the image file, if instance was created from file.  

因此建议使用“mime'对于未知的'也许是Raw post数据图像文件:

$mime = $image->mime();  //edited due to updated to 2.x
if ($mime == 'image/jpeg')
    $extension = '.jpg';
elseif ($mime == 'image/png')
    $extension = '.png';
elseif ($mime == 'image/gif')
    $extension = '.gif';
else
    $extension = '';

答案 1 :(得分:0)

当您使用PHP上传文件时,它们会重命名为/tmp/phpJHlKbK,因此没有可用的扩展程序。

然而,如果没有可用的扩展名,Intervention Image 2.0(上周发布)会检查MIME类型。