文件上传前前端通过魔数(magic number)去限制上传文件类型

news/2024/11/8 9:14:42/

问题

最近项目需求文件上传前判断文件类型,有的同学会说用文件后缀判断不就好啦。其一,文件后缀可以修改,正确性待考究;其二,有些文件并没有文件后缀。这就需要我们动动脑筋啦,其实我们可以根据文件的头信息,来判断文件真正的格式

前提:什么是魔数(magic number)?

对于某一些类型的文件,起始的几个字节内容都是固定的,根据这几个字节的内容就可以判断文件的类型,这就是魔数。例如常见的图片类型对应的魔数:
在这里插入图片描述

解决办法

这里以elf文件为例进行判断:

<template><el-uploadclass="avatar-uploader"action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15":show-file-list="false":on-success="handleAvatarSuccess":before-upload="beforeUpload"><img v-if="imageUrl" :src="imageUrl" class="avatar" /><el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon></el-upload>
</template><script setup>
const isElfFile=(file)=> {return new Promise((resolve) => {const reader = new FileReader();reader.onloadend = function () {const magicNumber = new Uint8Array(reader.result.slice(0, 4));const elfMagic = new Uint8Array([0x7F, 0x45, 0x4C, 0x46]);for (let i = 0; i < magicNumber.length; i++) {if (magicNumber[i] !== elfMagic[i]) {resolve(false);return;}}resolve(true);};reader.onerror = function () {resolve(false);};reader.readAsArrayBuffer(file.slice(0, 4));});
}const beforeUpload= async file=>{
const isElfType=await isElfFile(file)
if(isElfType){
//判断当文件类型为elf时需要进行的操作,巴拉巴拉。。。
}
}
</script>

http://www.ppmy.cn/news/960806.html

相关文章

chatgpt api教程

很抱歉&#xff0c;作为一个训练有素的语言模型&#xff0c;我没有针对中文的具体教程。但是您可以查看 OpenAI 官方的 API 文档&#xff0c;其中有详细的使用说明和代码示例。在此文档中&#xff0c;您将了解到如何使用 API 访问 ChatGPT 的功能&#xff0c;并通过编写代码来实…

【ChatGPT】《Cursor教程:全自动代码生成器,GPT-4让人人都可以编程》- 知识点目录

《Cursor教程&#xff1a;全自动代码生成器&#xff0c;GPT-4让人人都可以编程》 Cursor是一款由GPT-4加持的全自动编程神器&#xff0c;任何人都可以用它来编程或者学习编程。 CommandK&#xff1a;用来调出生成代码框&#xff0c;输入你想要的程序CommandL&#xff1a; 问它…

Python(二十二)运算符——算术运算符

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

chatGPT进阶教程:如何提升chatGPT的生成能力和质量

chatGPT是一个基于深度学习的自然语言生成系统&#xff0c;它可以根据用户的输入生成各种有趣和有用的内容&#xff0c;如对话、故事、诗歌、歌词、代码等。chatGPT的生成能力和质量对于提高用户的体验和满意度&#xff0c;以及拓展chatGPT的应用和创新&#xff0c;都是非常重要…

独家 前美团联合创始人王慧文“正在收购”国产AI框架OneFlow,光年之外欲添新大将

以ChatGPT为代表的AI大模型是2023年的科技C位。 2023年3月27日&#xff0c;ChatGPT引发的“抓马连续剧”&#xff0c;又有新剧更新。 前情提要&#xff1a; 前美团联合创始人、高级副总裁王慧文发文宣布进入AI领域&#xff0c;称将打造中国的OpenAI。 新闻标题一&#xff1…

独家丨前美团联合创始人王慧文“正在收购”国产AI框架OneFlow,光年之外欲添新大将...

文丨谭婧 以ChatGPT为代表的AI大模型是2023年的科技C位。 2023年3月27日&#xff0c;ChatGPT引发的“抓马连续剧”&#xff0c;又有新剧更新。 前情提要&#xff1a; 前美团联合创始人、高级副总裁王慧文发文宣布进入AI领域&#xff0c;称将打造中国的OpenAI。 新闻标题一&…

互联网摸鱼日报(2023-02-09)

互联网摸鱼日报&#xff08;2023-02-09&#xff09; InfoQ 热门话题 ChatGPT进军B端&#xff1f;消息称微软将允许企业创建定制版ChatGPT Meta被曝向管理人员下“最后通牒”&#xff1a;要么加大产出&#xff0c;要么离职 2023年前端十大Web发展趋势 2023年构建前端应用时应…

裁员潮下的中年人

作者| Mr.K 编辑| Emma 来源| 技术领导力(ID&#xff1a;jishulingdaoli) “K哥&#xff0c;我失业快半年了&#xff0c;现在无时无刻不觉得自己是一个‘无用无尊严’的中年loser&#xff0c;我快崩溃了&#xff0c;K哥能帮我推荐一份工作吗&#xff1f;…” 近期&#xff0c…