繁体   English   中英

如何处理图像的mime类型“application / octet-stream”?

[英]how handling image's mime type “application/octet-stream”?

我有一个功能,可以在飞行中制作网址图片缩略图! 我总是传递给jpg类型的这个函数图像,但是当我传递带有“.jpg”扩展名的图像时会出现问题。 但是当我尝试获取它的mime类型时,我发现它的“ application / octet-stream ”..在这个php页面中 ,这个mime类型指的是其中一个

IMAGETYPE_JPC,IMAGETYPE_JPX,IMAGETYPE_JB2

我需要修改我的函数来处理这个mime类型?

注意^^^^^^

function thumb($path,$width,$height) // $path => image url
{
        $file_dimensions = getimagesize($path);
        $file_type = image_type_to_mime_type($file_dimensions[2]);
        list($Cwidth, $Cheight) = getimagesize($path);
        if ($file_type=='image/jpeg'||$file_type=='image/pjpeg'){
            // Load
        $thumb = imagecreatetruecolor($width, $height);
        $source = imagecreatefromjpeg($path);
        // Resize
        imagecopyresized($thumb, $source, 0, 0, 0, 0, $width, $height, $Cwidth, $Cheight);
        header('Content-Type: image/jpeg');
        imagejpeg($thumb);
        }
        else if ($file_type=='application/octet-stream')
        {
           // ^^^^^ what I should write here
        }
        else
        {
            echo "Not supported type";
        } 
} 

我刚才正在做同样的事情。

我正在测试一些图像,.gif,.jpeg,.png ...使用finfo我发现你读取的mime类型取决于你用来读取文件的常量。 更多! 您可以从图像中读取application / octet-stream作为mimetype! 并且该信息没有错。 看到:

如果你使用没有常量的finfo_open():

<?php
$finfo = finfo_open();
$FileInfo = finfo_file($finfo, $tmp_name);
finfo_close($finfo);

你得到了你期望的mime类型:

如果.svg - > HTML文档,ASCII文本,行很长,没有行终止符

如果.jpg(来自您的手机摄像头) - > JPEG图像数据,EXIF标准2.2

如果.gif(从油漆中保存) - > GIF图像数据,版本89a,wxh

同时使用像FILEINFO_MIME_TYPE这样的常量

<?php
$finfo = finfo_open(FILEINFO_MIME_TYPE, $mf); // $mf is a magic file
$FileInfo = finfo_file($finfo, $tmp_name);
finfo_close($finfo);

你有不同的价值:

if .svg - > text / plain

如果.jpg(来自手机摄像头) - > application / octet-stream

if .gif(从paint中保存) - > application / octet-stream

所以你必须测试你在测试mimetypes时读到的内容。 请参阅Fileinfo预定义常量

希望能帮助到你

我们无法告诉你,因为application/octet-stream是一种通用类型的二进制文件mime-type。 它可以是一切。 您可以在文件二进制内容上尝试使用imagecreatefromstring 但保持手指交叉;)。

这里的实际问题是getimagesize独立于用于调整图像大小的GD库。 所以它提供了关于GD本身无法处理的文件的信息。 因此,您可以输出某种“不支持的图像类型”,直到找到一些能够处理特定模仿或更好的图像类型的附加库。

另见:

对于application / octet-stream,您可以获取原始文件名并检查其扩展名。 如果它的jpg你应该很高兴去

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM