很久没来写教程了。之前有过写Flash与后台通讯方面教程的想法,但是一直没有时间写。后来看到火山那篇优秀的Flash与ASP通信教程以后,自愧不
如。我大概也没必要再写一遍了,在火山的文章面前,我要是再写一遍,大概都会给各位笑死,自己没火山的那个文字功底啊,写出来的东西没他的那么容易看懂。
如果写后台通信,我想我可以补充的,也就是一些后台管理的技巧了,但是,我的站在后台管理方面,其实是乱七八糟的,每次更新都很麻烦,尽管自己也制作了一
些方便更新的脚本或程序,但是,最失败的一点就是始终无法离开FTP的上传。所以,这方面的内容,还是等我经验积累多了再跟大家谈,以免贻笑大方。
火山的Flash+asp教程:
http://bbs.blueidea.com/thread-2701824-1-1.html
废话说完了,转入正题。
其实这个问题,我一直都忽略了。我是从Flash MX时代走过来的人,MX2004出来后,AS就没有再去认真地学下去,直到现在,Player7后的很多新功能我几乎都没有用过,像Tween类,filters类等等。
FileReference类其实也有很长一段时间没引起我的兴趣,但是,看了Flash 8自带的Sample以后,发觉这东东蛮有用的,可以选择本地图片,然后显示在Flash里头。
不过,它的显示是通过上传,然后再下载来实现的,觉得很麻烦,看个本地图片也要经过网络(不过当初没有怪它,大概是要演示FileReference类的
upload吧),决定把它改装一下,做个本地的图片浏览器。Flash 8能支持jpg,gif,png三类图片,能改出来觉得用途还是有滴。
然而,一切都让我失望了,搞了大半天,都不能把图片直接读出来,就是因为FileReference类无法获取文件的路径,只能得到文件名,想用loadMovie或者mcLoader类通过图片路径读取相应图片,还是没办法。可是,感觉只是差一点点啊。
虽然帮助文件没有提到如何获取文件路径,但是我仍不死心,总感觉是有的,于是,我写了下面的代码测试:
import flash.net.FileReference;
var fr:FileReference = new FileReference();
fr.browse();
var listener:Object=new Object();
fr.addListener(listener)
listener.onSelect = function(file:FileReference) {
for (var i in file) {
trace(i+":"+file[i]);
}
};
选好了一个文件以后,输出的结果
_listeners:[object Object]
creator:undefined
creationDate:Thu Feb 15 20:58:03 GMT+0800 2007
modificationDate:Thu Feb 15 20:58:04 GMT+0800 2007
size:3753620
type:.mp3
name:2007127171248.mp3
晕了,用for来枚举都得不到路径,看来这次是彻底绝望了。限制安全性也不用限制成这样吧,Macromedia?
而且,这也将意味着,代码中的file对象不能自己手动构造,必须通过FileReference的browse方法来构造。因为,仅通过输出的结果,是不可能得到你浏览的文件的,就是因为没了路径。
通过各大搜索引擎去寻找如何获取文件路径的答案,都是只有问的,没有回答的。
因为问这一问题的人不多,所以,这事情早搁浅了,一直没管它。
后来,朱高兄想做个可以播放本地音乐的播放器,是因为他看中了Flash 8的FileReference类。但是,当我道出了FileReference类不能获得文件路径的真相以后,他的这一想法就像我当初做图片浏览器的想法那样,给打消了。
最近又有人问到了此问题,看来,也是时候要研究下了。
http://bbs.blueidea.com/thread-2721771-1-1.html
要解决FileReference中的这一问题,至少目前来说,靠Flash是没有用的了,既然网页里头的文件域有完整路径,我们为何不去应用一下呢?
所以,解决此问题,用到的,主要还是Flash与js的通讯了,之前的教程都是用fscommand来弄,这次尝试用ExternalInterface
来实现,所以,接下来会先介绍ExternalInterface类的用法(这个相信大多数人会了,说简单些),然后就是文件域中的一个相当于
FileReference中browse的一个方法,以及类似于FileReference中onSelect的一个事件。
演示地址:http://hbro.cincn.com/HBrO/course/fileField/fileField.html
(续)
分享到:
相关推荐
2. 用户选择文件后,`FileReference`对象会触发`select`事件,此时可以通过`FileReference.name`获取选中文件的名称,`FileReference.size`获取文件大小。 3. 调用`FileReference.load()`方法读取文件数据到内存中。...
这里的`in_txt.text`表示要保存的文本内容,通常是从某个输入框或文本域获取。 ### 四、关键步骤详解 - **导入`FileReference`**:首先,确保正确导入了`flash.net.FileReference`,这样我们才能使用该类的所有...
### Flex中的文件上传与下载...尽管存在一些限制,如文件路径的安全访问问题,但在大多数应用场景下,这些功能已经足够满足需求。对于希望在Flex应用中加入文件上传下载功能的开发者来说,本文提供了一个很好的起点。
可以使用`name`属性获取文件名,`type`获取文件类型。 4. **文件上传**:使用`FileReference`的`upload()`方法将文件上传到服务器。此方法需要一个`URLRequest`对象,该对象的`url`属性应设置为服务器端处理上传...
3. **路径问题**: 如果TXT文件和FLA文件在同一文件夹内,你可以直接使用相对路径来引用文件。例如,如果你的TXT文件名为`data.txt`,那么路径可能写为`"data.txt"`。但请注意,这种方法在发布项目时可能不适用于...
- **FileReference.save()**:使用`FileReference`的`save()`方法,指定文件名和保存路径,开始下载。同时,可以监听`download`事件来跟踪下载进度和状态。 - **安全限制**:需要注意的是,由于浏览器的安全策略,...
1. **Flex中的FileReferenceList和FileReference**: - **FileReferenceList**:这是Flex提供的一个类,用于处理用户选择的多个文件。当用户在应用中选择多个文件进行上传时,FileReferenceList对象会存储这些文件...
Struts2提供了FileUpload拦截器来支持文件上传,需要在struts.xml配置文件中启用这个拦截器,并设置对应的文件大小限制和存储路径。 对于单文件上传,一个简单的流程是:用户在Flex前端选择文件,FileReference对象...
1. 创建`FileReference`对象,让用户选择文件。 2. 监听`FileReference`的`select`事件,获取选中的文件。 3. 设置`FileReference`的`upload()`方法,指定`PHP`处理脚本的URL。 4. 启动上传过程,监听`progress`、`...
1. 创建一个`FileReference`实例。 2. 监听`browse`事件,让用户选择文件。 3. 当用户选择文件后,触发`select`事件,调用`load`方法读取文件内容。 4. 文件加载完成后,触发`complete`事件,调用`upload`方法将文件...
`FileReference.browse()`方法用于打开文件选择对话框,`FileReference.upload()`方法用于将选中的文件上传到服务器。 2. **文件类型筛选**:描述中提到,当前的前端代码仅允许选择图片文件。这通常是通过监听`...
1. 用户触发文件选择:通过Flash中的按钮或组件,调用FileReference对象的browse()方法,弹出文件选择对话框。 2. 选择头像文件:用户在对话框中选择要上传的头像图片文件,如.jpg、.png等格式。 3. 文件加载:使用...
1. **Flash文件上传组件**:在Flash中,我们可以使用`FileReference`类来实现文件选择和上传。用户点击Flash中的按钮后,`FileReference.browse()`方法会打开文件选择对话框。选定文件后,`FileReference.load()`...
使用Part的write()方法,指定保存路径。 3. **错误处理**:Servlet还需要进行文件类型的检查、大小限制等验证,以防止恶意文件上传。如果发现不符合条件的文件,应返回错误信息给Flash。 4. **响应反馈**:Servlet...
Flex提供了Camera类来访问和控制用户的摄像头,我们可以用它的`getVideo`方法获取视频流,然后使用BitmapData的`draw`方法将每一帧绘制到位图上,最后进行保存。 3. **SaveChart-app.xml 和 SaveWebcam-app.xml** -...
为了绕过这个问题,你可以使用FileReference类来弹出一个保存对话框,让用户选择保存位置。例如: ```actionscript var fileRef:FileReference = new FileReference(); fileRef.save(excelExporter.getBytes(), ...
这可以通过将JAR添加到项目的类路径或者使用构建工具(如Maven或Gradle)来实现。例如,在Maven的`pom.xml`文件中添加以下依赖: ```xml <groupId>com.jthink</groupId> <artifactId>jid3lib <version>0.5.4 ...