获取Microsoft 10 Edge浏览器Mime类型的php

5

在 Microsoft 10 的 Edge 浏览器中检查正在上传的文件的 mime 类型时,我发现 .doc 文件的 Mime 类型为:

application/octet-stream

显然,这表示“任意二进制数据”:我需要Content-Type: application/octet-stream来下载文件吗?

在其他浏览器中,我得到的是application/msword

是否有一种新的方式来处理Edge浏览器中的.doc文件的MIME类型,以及我需要注意的其他MIME类型?

更新:

我正在使用php的$_FILES ['uploadName'] ['type']来获取MIME类型


有点像是个 bug - 要不要报告一下呢? - user557846
2
你不应该从$_FILE中提供的数据中获取MIME类型,因为这非常不可靠且容易被解释,正如你所经历的那样。相反,对上传的临时文件进行新的分析,使用finfo()或类似方法。 - Martin
1个回答

4
我发现使用这个替代方法,可以获得正确的MIME类型:
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mimeType = $finfo->file($_FILES['uploadName']['tmp_name'][$key]);

正如Martin在上面的评论中提到的:

你不应该从$_FILE中给出的数据中抓取MIME类型,因为这非常不可靠,需要解释,并且会导致多种解释方式,就像你现在经历的一样。相反,对上载的临时文件进行新的分析,使用finfo()或类似方法。


在我上面的评论之前,我应该先看一下你的答案,唉......很高兴你找到了更可靠的方法。 - Martin
是的,谢谢您的好评和宝贵建议。如果有人来到这里,这将是值得一看的内容。我会将其添加到我的答案中。 - Andrew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接