zoukankan      html  css  js  c++  java
  • Flash As3 通过二进制[ByteArray]判断真实的文件类型

    文章出处:http://www.flashandflex.com/html/xwpd/gn/1258.html 

    从开始研究Flash文件上传,用它来进行批量上传之后。我就遇到很多朋友提出的一个问题。

     

    那就是上传之前对所选文件类型的检测。

     

    Flash FileReference中的type检测是弱检测。也就是说他只会检测后缀名。如果通过这种方式的话很容易造假。

     

    比如,将一个1.exe修改后缀成为1.jpg。然后进行上传。如果 你通过FileReferencetype来检查是否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位的整数,根据这个整数,我们可以得知这个文件的真实类型。

    }

  • 相关阅读:
    SharePoint 2013 APP 开发示例 (六)服务端跨域访问 Web Service (REST API)
    麦咖啡导致电脑不能上网
    SharePoint 2013 Central Admin 不能打开
    SharePoint 2013 APP 开发示例 (五)跨域访问 Web Service (REST API)
    SharePoint 2013 APP 开发示例 系列
    synthesize(合成) keyword in IOS
    Git Cmd
    简单的正则匹配
    Dropbox
    SQL Server Replication
  • 原文地址:https://www.cnblogs.com/as3developer/p/2123939.html
Copyright © 2011-2022 走看看