干预图像 - 如何使用 MIME 类型上传图像:应用程序/八位字节流

我使用Laravel框架和干预图像库在我的页面上上传和处理图像。一切正常,直到我尝试更新从移动设备或相机拍摄的.jpg图像。这些映像具有 MIME 类型,而不是 。当我尝试使用此命令上传图像时:application/octet-streamimage/jpeg

Image::make($thumb)->resize($this->twidth, $this->theight)->save($this->destination."/".$filename);

我收到错误:

Unable to read image from file

一个不舒服的解决方案是打开MS Paint中的图像并重新保存它们,这会将MIME类型更改为“image / jpeg”,并使其可以上传。但我想不惜一切代价逃避这个解决方案。

编辑:

我试图通过以下命令修复它:

$img = imagecreatefromstring($thumb);

但它返回错误:imagecreatefromstring(): Empty string or invalid image

有没有办法处理这种类型的图像?


答案 1

在 php 中检查upload_max_filesize.ini。就我而言,这是原因。


答案 2

好吧,在这种情况下,您可以删除Laravel验证规则哑剧,相反,您可以使用PHP通过其扩展来验证图像。

验证规则将如下所示。

$request->validate([
    'image' => 'required',
]);

使用文件扩展名验证图像将如下所示

if (! in_array($request->file('image')->clientExtension(), ['jpg', 'jpeg', 'png'])) {
   // not a valid image
}

推荐