`
leonard1853
  • 浏览: 85281 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用FileReference来选择文件计算MD5码

    博客分类:
  • Flex
阅读更多

我使用的Flash Player版本还不支持在web中获取文件本地路径的功能(据说是adobe为了安全,但可以在air中获取)。

好了,问题是我现在需要在web中选取一个文件,并计算其md5码,首先我想到的是获取文件的路径,然后用java的io操作从文件中读取数据,计算md5码。

这可难死我了,FileReference只能获取文件名、文件大小。

在网上搜了几天,想到一个可行的方法:
1、用FileReference的browse方法打开上传文件对话框;
2、用FileReference的load方法将文件读入内存;
3、从内存中按byte流将文件读出,用java的java.security.MessageDigest类计算md5码。


下面是代码片段:
1、new一个FileReference类对象:

var file:FileReference = new FileReference();

 2、为该对象添加一个选择事件监听器:

file.addEventListener(Event.SELECT,onSelect);

 3、在回调函数onSelect中,再添加一个选择完成监听器,

并在此得到文件名和文件大小,并将文件load到内存中(其中file_path和file_size是两个text组件的id):

private function onSelect(event:Event):void {				
  file.addEventListener(Event.COMPLETE,onComplete);
  file_path.text = file.name;
  file_size.text = file.size+"";	
  file.load();
}
 

4、在回调函数onComplete中,得到文件字节流,并传入对应的java对象(md5Creator)中计算md5码:

md5Creator.getMD5(file.data);

 5、在md5Creator对应类中的getMD5方法如下:

String getMD5(byte[] source) {
  ……
  java.security.MessageDigest md = java.security.MessageDigest
					.getInstance("MD5");
  md.update(source);
  byte tmp[] = md.digest();
  ……//将tmp转换成16进制字符串并返回
}

 

小结:

   如果哪位朋友知道怎样获取本地路径(或者是结合js来获取),请指教一下,从网上看到最常用的就是用js来获取本地路径,但是我不知道把js单独放在一个js文件中,还是放在一个html文件中。还有就是通过ExternalInterface来调用js中函数时,怎么知道是调用哪个js中的哪个函数?小弟对js不懂,所以希望找人交流一下,谢谢!

分享到:
评论
1 楼 fly_air 2013-04-22  
谢谢

2、用FileReference的load方法将文件读入内存; 

那你文件有没有处理过大文件 比如几百M或者1G以上的 可以吗?

相关推荐

    Flex多文件上传+md5验证文件是否上传

    这个接口需要解析接收到的文件数据,并计算其MD5值与客户端传来的MD5值进行对比。如果匹配,就将文件保存到服务器;如果不匹配,说明文件可能在上传过程中出现问题,服务器可以拒绝接收并返回错误信息。 5. **安全...

    Flex3获得文件Hash值MD5值完整工程源码

    5. **用户交互**:用户应能选择要检查的文件,这可能通过FileReference的`browse()`方法实现,允许用户选择本地文件。 6. **错误处理**:源码应包含适当的错误处理机制,处理如文件不存在、读取错误等情况。 这个...

    flex 利用FileReference上传firefox报2038错误

    ### flex 利用FileReference上传firefox报2038错误 #### 问题概述 在使用Flex框架进行Web开发时,可能会遇到使用`FileReference`组件上传文件至服务器时,在Firefox浏览器下出现“2038”错误的情况。该错误通常发生...

    源码:Flex与.NET互操作(五):使用FileReference+HttpHandler实现文件上传/下载

    Flex与.NET互操作(五):使用FileReference+HttpHandler实现文件上传/下载 一文的源码的完整工程文件,包含FLEX客户端和 ASP.NET服务端源码! 在VS2010和FLash builder4 中运行!

    完整的文件上传功能。File Reference实现

    本文将详细讲解如何利用`FileReference`类实现完整的文件上传功能,包括单文件和多文件上传。 `FileReference`是AS3中的一个核心类,它允许用户与本地文件系统进行交互,比如选择、读取、保存和上传文件。在Flex...

    flash选择多文件上传,可限制选择文件类型

    在Flash中,这可以通过监听`fileReference.browse()`事件并在选择文件后进行检查来实现。如果用户选择了不受支持的文件类型,程序可以给出相应的提示。 接下来,我们关注一下项目中的文件: - **FlashUpload....

    fl包+filereference demo

    另一方面,"crop_rectangle_app.zip"可能是一个具体的应用,比如图像裁剪工具,它可能用到了filereference类来处理用户选择的图片文件,允许用户裁剪后保存到本地。 在实际开发中,熟练掌握fl包和filereference类...

    UploadPlugIn上传控件

    3. MD5计算:在文件加载完成后,利用AS3Crypto库提供的MD5类,对文件内容进行哈希计算,得到文件的MD5值。 4. 发送请求:将计算出的MD5值与文件一起发送到服务器。可以使用URLLoader类和URLRequest类来构造HTTP请求...

    Flex与.NET互操作 使用FileReference+HttpHandler实现文件上传/下载

    本文将详细介绍如何利用Flex中的`FileReference`类结合ASP.NET中的`HttpHandler`来实现文件的上传和下载功能。我们将从Flex客户端的角度出发,探讨如何设置监听事件、处理文件选择及上传过程,并在最后实现与服务器...

    flex 怎么检测文件大小.

    综上所述,Flex中检测文件大小的方法主要包括利用FileReference对象获取本地文件大小,通过HTTP HEAD请求获取远程文件大小,以及在解析XML或AMF数据时计算文件大小。在实际应用中,应根据具体需求选择合适的方法,并...

    flex 多文件上传

    3. **Load事件**:在选择文件后,可以监听FileReference对象的load()事件来读取文件内容。但这在多文件上传中通常不常用,因为主要关注的是文件上传而非本地读取。 4. **Upload事件**:真正进行文件上传的操作发生...

    flex struts2文件上传

    5. 如果需要,可以实现进度条显示,利用FileReference的upload事件跟踪上传进度。 综上所述,Flex Struts2文件上传涉及Flex客户端的文件选择和上传,以及Struts2服务器端的文件接收和处理。通过合理配置和编程,...

    javaEE多文件上传(flash)

    在JavaEE平台上开发多文件上传功能时,常常会利用Flash技术来实现,因为Flash支持浏览器端的文件选择和上传操作。本教程将详细介绍如何在JavaEE环境中构建一个使用Flash技术的多文件上传功能。 首先,我们需要理解...

    flash 实现的多文件上传

    3. **多文件选择**:Flash可以使用FileReference.browse()方法打开文件选择对话框,用户可以在这里选择多个文件。通过设置FileFilter对象,还可以限制用户可以选择的文件类型。 4. **队列管理**:为了控制上传顺序...

    flex 文件上传下载完整代码(废弃--代码有错误)

    在本文中,我们将深入探讨基于Flex的文件上传和下载功能,以及如何利用FileReference类来实现这一过程。Flex是Adobe Flash Platform的一部分,它提供了一种强大的方式来构建富互联网应用程序(RIA)。在Flex中,我们...

    flashair本地文件上传

    首先,我们需要创建一个FileReference对象,并通过它来让用户选择要上传的文件。 2. **监听事件**:设置FileReference对象的事件监听器,包括“select”事件(用户选择文件后触发)和“upload”事件(文件上传过程...

    Flex文件上传下载

    2. 选择文件:Flex应用中,用户可以通过FileReference类来选择本地文件。FileReference提供了选择文件、读取文件内容和上传文件的一系列方法。 3. 事件处理:在用户选择文件后,可以监听FileReference的“select”...

    flash+php文件上传多选单选都可以

    在Flash中,可以利用FileReference类的browse()方法实现多选文件,然后逐个上传。这个过程可能需要用户界面元素来跟踪上传进度,Flash可以很好地支持这些高级功能。 实现Flash与PHP的文件上传交互,通常包括以下几...

    SwfUpload同时选择多个文件或者图片上传

    SwfUpload的工作原理是利用Flash的FileReference类,该类允许Flash应用程序访问用户的本地文件系统。当用户在SwfUpload的界面中点击“选择文件”按钮时,会弹出一个Flash对话框,用户可以在此一次性选择多个文件。...

    Flex文件上传的组件

    5. **进度条更新**:为了显示上传进度,我们需要监听FileReference的progress事件,该事件提供了一个bytesTotal属性(总字节数)和一个bytesLoaded属性(已加载字节数),可以计算出当前上传进度,并更新ProgressBar...

Global site tag (gtag.js) - Google Analytics