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位的整数,根据这个整数,我们可以得知这个文件的真实类型。

    }

  • 相关阅读:
    TV 丽音(NICAM)功能
    TV TimeShift和PVR的区别
    VGA、DVI、HDMI三种视频信号接口
    单词记忆
    gdb调试的基本使用
    Shell中字符串的切割、拼接、比较、替换
    I2C通信基本原理及其实现
    为什么单片机需要时钟系统,时钟信号在单片机中扮演怎样的角色?
    HDMI热插拔检测原理
    HDMI接口之HPD(热拔插)
  • 原文地址:https://www.cnblogs.com/as3developer/p/2123939.html
Copyright © 2011-2022 走看看