Flash As3 通过二进制[ByteArray]判断真实的文件类型
文章出处:http://www.flashandflex.com/html/xwpd/gn/1258.html
从开始研究Flash文件上传,用它来进行批量上传之后。我就遇到很多朋友提出的一个问题。
那就是上传之前对所选文件类型的检测。
Flash FileReference中的type检测是弱检测。也就是说他只会检测后缀名。如果通过这种方式的话很容易造假。
比如,将一个1.exe修改后缀成为1.jpg。然后进行上传。如果 你通过FileReference的type来检查是否jpg的话就会发现。Flash会傻乎乎的说:“这是个jpg文件”。
如果避免这种瞒天过海的手段呢。如果有特别要求的话可以使用ByteArray来对文件进行真类型检测。
我们知道FlashPlayer 10 新增了FileReference.load()。可以将已选择的文件加载到内存中。
这个FileReference.load()通常被大家用于本地图片预览。我们这里可以应用它加载到的ByteArray数据来获得文件的真实类型。
核心代码如下:
var file:FileReference;
file.load();//当选择文件之后,执行load加载进内存
file.addEventListener(Event.COMPLETE, securityTypeHandler);//注册加载完成事件监听
private function securityTypeHandler(e:Event):void {//真实文件类型检测
var t:ByteArray = e.target.data;//获得文件二进制流
var name:String = e.target.name;//获得文件名称
var type:String = e.target.type;//获得后缀名称
var tnum:String = String(t.readUnsignedShort());//读取文件一个16位的整数,根据这个整数,我们可以得知这个文件的真实类型。
}
posted on 2011-08-01 15:48 elvis.zhang 阅读(398) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?