我使用的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不懂,所以希望找人交流一下,谢谢!
分享到:
相关推荐
FLEXd多文件上传,上传前MD5验证允许那些文件可以上传
flex 利用FileReference上传firefox报2038错误,在网上收集的一些解决办法和资料
Flex与.NET互操作(五):使用FileReference+HttpHandler实现文件上传/下载 一文的源码的完整工程文件,包含FLEX客户端和 ASP.NET服务端源码! 在VS2010和FLash builder4 中运行!
完成的文件上传功能。使用FileReference类实现。还有多文件上传
Flex与.NET互操作 使用FileReference+HttpHandler实现文件上传/下载
fl包可用于纯as工程的ui应用,而filereference则是官方的demo
在项目开发过程中,经常会遇到文件上传下载的...但在flex中由于安全沙箱的原因flex程序不能直接访问本地文件,但是flex SDK中提供了FileReference和FileReferenceList两个类,可以通过这两个类来实现文件的上传下载。
Flex Builder 3 下载安装与项目创建详细说明 Flex中利用FileReference类下载文件的例子| 中文Flex例子
//AS3将文本文件保存到本地 仅5行代码 多么简单 import flash.net.FileReference; var fileRef:FileReference = new FileReference();
//ItemDate单文件大小限制,-1表示不限制,默认值为30M param.TotalDate = (this.parameters.TotalDate == undefined || this.parameters.TotalDate == "") ? -1 : this.parameters.TotalDate;//TotalDate总...
//指示可以上传的文件类型 imageTypes.extension = "*.jpg; *.jpeg; *.gif; *.png"; allTypes.push(imageTypes); var listener:Object = new Object(); listener.onSelect = function(file:FileReference):...
Adobe flash3 AIR 更新 中文 Adobe flash3 AIR 更新 中文
FileReferenceList 类或者FileReference 一个是多个上传一个是单个上传。用这2个类通过Java实现文件图片上传。
如果你和我遇见一样的问题:用actionscript写一个需要操作本地文件(比如excel文件)之后批量导出jpg的工具,那么filereference不支持在没鼠标操作的情况下一次性多操作,你可以用zip的方式,单击鼠标,批量保存。
请使用“flex 文件上传下载完整代码(修正版)”http://download.csdn.net/source/1815266
flex语言编写的,把xml内容存成xml文件保存到指定的位置!
Flash 上传图片 控件 FileReference FileReferenceList 支持多选上传及FileReference、FileReferenceList结合使用
鉴于adobe并没有提供FileReference对浏览的文件的完整路径的接口。只能采用JS和fileinput控件来获取本地路径了。
actionScript 3.0开发人员指南中文版,总共67章,955页。学习actionScript不错的书籍。 目录: 目录 第章:使用日期和时间 管理日历日期和时间 控制时间间隔 日期和时间示例:简单模拟时钟 ...AGAL字节码格式
通过flash.net.FileReference实现打开本地图片或音乐目录,有滤镜,可以设路径,仿照千千静听的波幅显示