当前位置: 首页 > 知识库问答 >
问题:

在PHP中检查“魔法字节”或Mime类型?

房新翰
2023-03-14

因此,我目前使用了几种不同的方法来检查mime类型。用户使用表单上传文件,我获取mime类型,如果是application/zip,我允许它,如果是其他类型,我拒绝它。问题在于(我假设的浏览器)正在将mime类型更改为“应用程序/八位字节流”

我想知道如何才能验证文件是否正确。在表单上传时压缩。

代码

  $name = strtolower(end(explode('.', $filename))); 
    $accepted_types = array('application/zip', 'application/x-zip-compressed',   'multipart/x-zip', 'application/x-compressed'); 

  foreach($accepted_types as $good_type) { 
        if($good_type == $type) {   
            $okay = true;  
            break;
        } else {
            $okay = false;
        }
  }

共有2个答案

危宜
2023-03-14

FWIW,您可以使用bin2hex获得魔法字节。根据维基百科(https://en.m.wikipedia.org/wiki/Magic_number_(编程)#魔法数字(在文件中)),拉链头两个十六进制字节504B

$zip=file_get_contents("somefile.zip");

echo strtoupper(substr(bin2hex($zip),0,2))//504B

农均
2023-03-14

使用mime内容类型。

$type = mime_content_type($filename);
 类似资料:
  • 本文向大家介绍python 检查文件mime类型的方法,包括了python 检查文件mime类型的方法的使用技巧和注意事项,需要的朋友参考一下 magic 模块可以检查文件的mime类型,而不是从后缀名来判断,例如判断文件是不是视频或图片类型如下: 以上这篇python 检查文件mime类型的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 问题内容: 有什么方法可以在Chrome中禁用。 实际上,我正在跨域发出JSONP请求。它可以在Firefox上正常工作,但是在使用chrome时,在控制台上会出现一些错误。 拒绝从“ https://example.com ” 执行脚本,因为其MIME类型(“ text / plain”)不可执行,并且启用了严格的MIME类型检查。 它在Mozilla中可完美运行。问题仅在Chrome中出现 这

  • 问题内容: 我一直在尝试找出如何从Java 6中的字节数组中获取 MIME类型 ,但是不幸的是还没有能够获取MIME类型。 有人可以帮助我摆脱困境吗? 问题答案: 您可以使用Java 6中提供的类。此类专门用于获取 MIME类型 。 使用它来获取MIME类型,如下所示: 对于从文件中获取,您可以使用以下代码:

  • 我已经读过这个和这个问题,它似乎建议可以在客户端使用javascript检查文件MIME类型。现在,我明白了真正的验证仍然必须在服务器端完成。我想执行客户端检查,以避免不必要的服务器资源浪费。 我说目前没有办法用javascript检查MIME类型,对吗?还是我漏掉了什么?

  • 问题内容: 让我们说一个以Base64 String编码并提供给我的文件(例如myfile.jpeg)。我无法知道文件类型是什么。我想将字符串解码为文件(此示例中为图像)。我怎么知道文件的类型(例如jpeg)? 问题答案: 通常,基本的64位编码字符串可以绝对包含任何数据,因此无法知道其文件类型。 要确定它是否为JPEG图像的实例,您需要对其进行base64解码,然后执行诸如检查其幻数之类的操作,

  • 在 Python 中,我们在定义类的时候可以定义属性和方法。当我们创建了一个类的实例后,我们还可以给该实例绑定任意新的属性和方法。 看下面一个简单的例子: class Point(object): def __init__(self, x=0, y=0): self.x = x self.y = y >>> p = Point(3, 4) >>> p.