首页 > web前端 > js教程 > 浏览器如何在文件上传之前可靠地检查 MIME 类型?

浏览器如何在文件上传之前可靠地检查 MIME 类型?

DDD
发布: 2024-12-02 04:12:14
原创
305 人浏览过

How Can Browsers Reliably Check MIME Types Before File Upload?

浏览器端 MIME 检查的工作原理以及为什么它很棘手

JavaScript 可以在上传文件之前确定文件 MIME 类型,但要验证它们为了安全起见,在服务器端。

第 1 步:使用FileReader API

获取文件信息:

var files = document.getElementsByTagName('input')[0].files;
console.log(files[0].type);
登录后复制

第 2 步:提取 MIME 类型

方法 1:使用Blob(可以被文件欺骗扩展)

console.log(files[0].type);
登录后复制

方法2:标头检查(更可靠)

var fileReader = new FileReader();
fileReader.onloadend = function(e) {
  var header = (new Uint8Array(e.target.result)).subarray(0, 4).toString(16);
  switch (header) {
    case "89504e47":
      type = "image/png";
      break;
    case "47494638":
      type = "image/gif";
      break;
    case "ffd8ffe0":
    case "ffd8ffe1":
    case "ffd8ffe2":
      type = "image/jpeg";
      break;
    default:
      type = "unknown";
      break;
  }
};
fileReader.readAsArrayBuffer(files[0]);
登录后复制

注意:

  • 文件扩展名可以伪造,因此头检查更多可靠。
  • 幻数可能会因文件类型而异。
  • 服务器端验证对于安全性仍然至关重要。

以上是浏览器如何在文件上传之前可靠地检查 MIME 类型?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板