Flex中使用FileReference类多文件上传

flex使用filereference+httphandler实现文件上传/下载 在flex的应用开发中,同asp.net,jsp,php等应用一样,都会有上传/下载文件的 应用需求,flex的sdk也为我们提供了专门的类filerefudderence实现文件上传/下载 。flex只是作为一个客户端,要实现上传或下载必须得为其提供一个服务端来接受上传或下载的请求,本文以asp.net中的httphandler作为 文件上传的服务端来完成上传功能。 o 阅读详情
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"  
  3.    layout="vertical" horizontalAlign="left" fontSize="12"  
  4.     initialize="init()"  
  5.     viewSourceURL="srcview/index.html">  
  6.    <mx:NumberFormatter id="filesizeFormatter" useThousandsSeparator="true"/>  
  7.    <mx:Script>  
  8.         <![CDATA[ 
  9.            import mx.events.CollectionEvent; 
  10.            import mx.formatters.NumberFormatter; 
  11.            import mx.formatters.CurrencyFormatter; 
  12.           import mx.collections.ArrayCollection; 
  13.             import mx.controls.Alert; 
  14.            private var fileRefs: FileReferenceList = new FileReferenceList(); 
  15.            //这个地址是我测试用的服务器地址 
  16.            private var urlrequest: URLRequest = new URLRequest("http://localhost:8080/abc/UploadFile"); 
  17.           [Bindable] 
  18.            private var selectedFiles: ArrayCollection = new ArrayCollection([]); 
  19.             private var singleThreadFiles: Array = []; 
  20.             [Bindable] 
  21.             private var useSingleThread: Boolean = true; 
  22.            private function init(): void 
  23.            { 
  24.                Security.allowDomain("*"); 
  25.                fileRefs.addEventListener(Event.SELECT, fileSelectHandler); 
  26.               fileRefs.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); 
  27.               fileRefs.addEventListener(Event.COMPLETE, completeHandler); 
  28.               addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);    
  29.            } 
  30.            private function selectFile(): void 
  31.            { 
  32.               fileRefs.browse([new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg;*.jpeg;*.gif;*.png"), 
  33.                                       new FileFilter("所有文件(*.*)", "*.*") 
  34.                            ]); 
  35.            } 
  36.           private function fileSelectHandler(event: Event): void 
  37.            { 
  38.                for each (var f: FileReference in fileRefs.fileList) 
  39.                { 
  40.                    selectedFiles.addItem(f); 
  41.                } 
  42.             } 
  43.             private function uploadFile(): void 
  44.             {                
  45.                for each (var f: FileReference in selectedFiles) 
  46.                 {            
  47.                    try 
  48.                    { 
  49.                       f.upload(urlrequest); 
  50.                    } 
  51.                    catch (e: Error) 
  52.                    { 
  53.                        Alert.show(e.message); 
  54.                     } 
  55.                 }                
  56.            } 
  57.            private function singleThreadUploadFile(): void 
  58.            { 
  59.                //FIFO:逐个从列表中取出,进行同步上传 
  60.                if (singleThreadFiles.length > 0) 
  61.                { 
  62.                    var f: FileReference = singleThreadFiles.pop() as FileReference; 
  63.                    f.addEventListener(Event.COMPLETE, doSingleUploadFileComplete); 
  64.                    f.upload(urlrequest); 
  65.                 } 
  66.           } 
  67.             private function doSingleUploadFileComplete(event: Event): void 
  68.            { 
  69.                var f: FileReference = event.target as FileReference; 
  70.                f.removeEventListener(Event.COMPLETE, doSingleUploadFileComplete); 
  71.                singleThreadUploadFile(); 
  72.            } 
  73.           private function ioErrorHandler(e:IOErrorEvent): void 
  74.            { 
  75.               Alert.show(e.text); 
  76.            } 
  77.            private function completeHandler(e: Event): void 
  78.             { 
  79.                 img.source = e.target.data; 
  80.             } 
  81.             private function showImage(e: Event): void 
  82.             {                
  83.                 var f: FileReference = (e.target as DataGrid).selectedItem as FileReference; 
  84.                 f.addEventListener(Event.COMPLETE, completeHandler); 
  85.                 //f.load(); 
  86.             
  87.             } 
  88.             public function removeFile(f: FileReference): void 
  89.             { 
  90.                 var index: int = selectedFiles.getItemIndex(f); 
  91.                 if (index != -1) 
  92.                     selectedFiles.removeItemAt(index); 
  93.             } 
  94.         ]]>  
  95.     </mx:Script>  
  96.     <mx:VBox>  
  97.         <mx:HBox width="100%">  
  98.             <mx:Button id="selectFileButton" label="浏览" click="selectFile()"/>  
  99.             <mx:Box width="100%" horizontalAlign="right">  
  100.                 <mx:Button click="selectedFiles.removeAll();" label="清空"/>  
  101.             </mx:Box>  
  102.         </mx:HBox>  
  103.         <mx:DataGrid id="files" dataProvider="{selectedFiles}" change="showImage(event)">  
  104.             <mx:columns>  
  105.                 <mx:DataGridColumn width="150" headerText="文件名" dataField="name" />  
  106.                 <mx:DataGridColumn headerText="大小(字节)" dataField="size">  
  107.                     <mx:itemRenderer>  
  108.                         <mx:Component>  
  109.                             <mx:Label text="{outerDocument.filesizeFormatter.format(data.size)}" textAlign="right"/>  
  110.                         </mx:Component>  
  111.                     </mx:itemRenderer>  
  112.                 </mx:DataGridColumn>  
  113.                 <mx:DataGridColumn headerText="上传进度" width="300">  
  114.                     <mx:itemRenderer>  
  115.                         <mx:Component>  
  116.                             <mx:HBox fontSize="10" fontWeight="normal" fontThickness="1">  
  117.                                 <mx:Script>  
  118.                                     <![CDATA[ 
  119.                                         import flash.profiler.showRedrawRegions; 
  120.                                         import mx.controls.Alert; 
  121.                                          import mx.controls.ProgressBar; 
  122.                                          private function initProgressBar(event: Event): void 
  123.                                          { 
  124.                                             //使progressbar与file关联,从而产生进度条 
  125.                                             var pb: ProgressBar = event.target as ProgressBar; 
  126.                                             pb.label = "%3%%"; 
  127.                                              pb.setProgress(0, 100); 
  128.                                              var f: FileReference = data as FileReference; 
  129.                                              //使用闭包方法,更新进度条 
  130.                                              f.addEventListener(ProgressEvent.PROGRESS, 
  131.                                                  function(event: ProgressEvent): void 
  132.                                                  { 
  133.                                                      pb.setProgress(event.bytesLoaded, event.bytesTotal); 
  134.                                                  } 
  135.                                             ); 
  136.                                             f.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, 
  137.                                                 function (event: DataEvent): void 
  138.                                                 { 
  139.                                                     //服务器端一定要返回数据,否则,这个方法就不起作用了 
  140.                                                     pb.label = event.data; 
  141.                                                 } 
  142.                                             );                                            
  143.                                          } 
  144.                                     ]]>  
  145.                                 </mx:Script>  
  146.                                 <mx:ProgressBar verticalCenter="true" width="100%" paddingLeft="5" paddingRight="5"  
  147.                                     maximum="100" minimum="0" labelPlacement="center" mode="manual"  
  148.                                     label="%3%%" textAlign="left"  
  149.                                     creationComplete="initProgressBar(event)"/>  
  150.                                 <mx:LinkButton label="Cancel">  
  151.                                     <mx:click>  
  152.                                         <![CDATA[ 
  153.                                             var f: FileReference = data as FileReference; 
  154.                                             f.cancel(); 
  155.                                         ]]>  
  156.                                     </mx:click>  
  157.                                 </mx:LinkButton>  
  158.                                 <mx:LinkButton label="Delete">  
  159.                                     <mx:click>  
  160.                                         <![CDATA[ 
  161.                                             var f: FileReference = data as FileReference; 
  162.                                             outerDocument.removeFile(f); 
  163.                                         ]]>  
  164.                                     </mx:click>  
  165.                                 </mx:LinkButton>  
  166.                             </mx:HBox>  
  167.                         </mx:Component>  
  168.                     </mx:itemRenderer>  
  169.                 </mx:DataGridColumn>  
  170.             </mx:columns>  
  171.         </mx:DataGrid>  
  172.     </mx:VBox>  
  173.     <mx:HBox>  
  174.         <mx:Button label="上传">  
  175.             <mx:click>  
  176.                 <![CDATA[ 
  177.                     if (useSingleThread) 
  178.                     { 
  179.                         //逐个上传 
  180.                        singleThreadFiles = selectedFiles.toArray().concat(); 
  181.                         singleThreadFiles.reverse(); 
  182.                         singleThreadUploadFile(); 
  183.                     } 
  184.                     else 
  185.                     { 
  186.                         //多个文件同时上传 
  187.                         uploadFile(); 
  188.                     } 
  189.                 ]]>  
  190.             </mx:click>  
  191.         </mx:Button>  
  192.         <mx:CheckBox id="checkboxSingleThread" label="同时上传多个文件" selected="{!useSingleThread}"  
  193.             change="useSingleThread = !checkboxSingleThread.selected"/>  
  194.     </mx:HBox>  
  195.     <mx:Image id="img" width="400" height="300"/>  
  196. </mx:Application> 
003:大疆智图新手入门:从下载安装到首次建模实战 本文为大疆智图新手提供从下载安装到首次三维建模的完整实战指南。详细介绍了软件安装的硬件要求、试用许可申请流程,并指导用户如何准备航拍数据或使用开源样例进行首次建模。通过分步操作演示与核心参数设置讲解,帮助初学者快速掌握使用大疆智图进行实景三维重建的核心流程与常见问题解决方案。 阅读详情

相关推荐

NLP-Beginner 任务一:基于机器学习的文本分类(超详细!!)

NLP-Beginner 任务一:基于机器学习的文本分类传送门一. 介绍1.1 任务简介1.2 数据集1.3 流程介绍二. 特征提取2.1 词袋特征(Bag-of-word)2.2 N元特征 (N-gram)三. 最优化求解3.1 Softmax回归介绍3.2 损失函数3.3 梯度下降3.4 学习率四. 代码及实现4.1 实验设置4.2 结果展示4.3 代码新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、

0oTedo0 9933

Flex 4 (Gumbo) 预览本地文件.

Flex 4 之前,在上传文件的时候,是不能浏览或者读取本地文件的。大部分的解决方案就是,先把文件上传到服务器中,然后通过URL对象读取。在新版的Flex 4中有所改善。 在Flex 4中,FileReference 对象新增了load()方法,此方法就是读取选取的文件。通过data属性,就可以返回选择文件的二进制字节数据。 示例代码如下所示: ...

stuhack0303的博客 183

生成式引擎优化(GEO)标准化操作流程:构建高效AI生成系统的全链路指南

GEO是针对生成式AI的内容优化策略,通过提升内容在AI生成答案中的引用优先级实现品牌传播。相比传统SEO,GEO使内容直接嵌入AI答案,无需用户点击链接。核心流程包括:1)逆向拆解AI问答场景,结构化知识资产;2)生产权威内容(白皮书、专利数据)和算法适配内容(PCOE模板);3)技术实现(数据投喂、模型微调);4)331渠道分发策略;5)效果监控与动态防御。需注意采用结构化数据标记、主动提交训练数据,并避免简单复制SEO策略。2025版强调内容权威性和语义优化,通过AI原生内容工程实现高效曝光。

解锁AI流量新红利!🚀 GEO优化(生成引擎优化)助您掌控AI搜索,让AI成为您的品牌最佳代言人! 1162

Flex FileReference 应用总结

<br />在Flex SDK 4.0以后,FileReference 才支持对本地文件的读写操作,之前版本是不支持的,所以下面针对Flex SDK4的FileReference 的应用中上一些小问题汇总如下:<br />FileReference的应用的一般套路是:<br />var fileRef:FileReference = new FileReference();<br />fileRef.addEventListener(Event.SELECT,onFileSelected); //文件选中后

Katichar 1438

VSCode 1.85便携版安装与配置:解决远程服务器glibc版本过低报错的保姆级指南

本文详细介绍了如何通过VSCode 1.85便携版解决远程服务器glibc版本过低导致的兼容性问题。通过环境隔离和版本固化的方法,开发者可以在老旧服务器上稳定运行Remote-SSH插件,同时保留主力VSCode的配置。文章提供了从下载安装到深度配置的完整指南,帮助用户快速搭建稳定的开发环境。

weixin_30279315的博客 577

【成功安装】Ubuntu22.04极简方式安装Nvidia驱动

今天下午安装了实机的Ubuntu,面临在Linux上安装Nvidia的问题,被这个问题困扰了一整个下午,各种报错整的我头大。后来发现了不需要按照传统的方式去Nvidia官网下载,再命令行安装,直接在线安装即可。

清筱明的博客 5346

flex:使用FileReference上传文件

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()" width="1000" height="700" color="#25C1E2">    private const defaultRequestUrl:String = "http

一个人有了信仰,不管成不成功,至少不会迷茫。 6701

Simulink仿真状态空间中状态变量时域响应

起因 今天老师留了一道关于状态空间变量响应的题,于是想用simulink仿真,一开始使用state-space模块,但是发现它只能输出y,没办法显示状态变量的变化情况。然而状态变量之间的关系都可以表示为一阶微分方程组,因此我们考虑在Simulink中搭建微分方程组来求解这个问题。 微分方程组 x1˙=x2x2˙=−4x1−5x2+1(1)\dot{x_1}=x_2\\ \dot{x_2}=-4x_...

ZYunfei的博客 7450

Flex中的文件上传与下载

和传统的JSP一样,在flex中,有的时候也需要实现文件上传和下载的功能,但是在flex里文件的上传和下载的实现相对来说比较复杂,如何实现,请看下面。    由于flex是一个比较新的技术,在研究的时候,还是按着JSP的方式去尝试,在开始之初,主要有以下几种思路:    A、利用ftp的方式进行文件的上传和下载,需要利用flex的socket接口。    B、利用webService的

wkyb608的专栏 2530

【DRAM存储器四十七】LPDDR5介绍--LPDDR5的低功耗技术之DVFS

讲述LPDDR5的DVFSC和DVFSQ的工作原理和要求

highman110的博客 900

汽车LIN总线(3) -- 协议层:帧的类型

主要介绍LIN协议层中帧的类型,介绍中加入一点自己的理解(带下划线的是,其余是官方资料)。

晴朗luo的博客 889

Flex 多文件上传组件

1. 原理 flex文件上传有两种方式:一是利用FileReference类来完成,直接提交给后加Servlet;而是利用RemoteObject上传,上传的过程要把图片的二进制数组传递到后台进行保存。这里多文件上传选择第一种方法。 2. 步骤 封装多文件上传类。MultiFileUpload.as 封装多文件上传的控制类 FlexFileUpload_cb.as 封装后台文件保存类 U...

吉祥小家 184

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

flex文件上传下载

和传统的JSP一样,在flex中,有的时候也需要实现文件上传和下载的功能,但是在flex里文件的上传和下载的实现相对来说比较复杂,如何实现,请看下面。 由于flex是一个比较新的技术,在研究的时候,还是按着JSP的方式去尝试,在开始之初,主要有以下几种思路: A、利用ftp的方式进行文件的上传和下载,需要利用flex的socket接口。 B、利用webS...

cpyong的专栏 190

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

FLEX FTP上传

1、Flex端 A、使用到的类介绍: FileReference 类提供了在用户计算机和服务器之间上载和下载文件的方法。 操作系统对话框会提示用户选择要上载的文件或用于下载的位置。它主要能实现一个文件的上传。 FileReferenceList 类提供了让用户选择一个或多个要上载的文件的方法。 FileReferenceList 对象

1579

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

flex struts2单文件上传、同名文件上传、多文件上传

flexbuilder:3 ,Myeclipse:10.0,struts:2.3. 工程可以在http://download.csdn.net/detail/fansy1990/6621255下载 flex使用FileReference实现单文件上传,使用FileReferenceList实现多文件上传。 1. 单文件上传: flex单文件上传,一般要经过哪些步骤呢? (1)初始化一个F

fansy1990的专栏 3135

Flex中文件的上传下载

 关键词:文件上传,文件下载,FileReference,FileReferenceList,FileFilter 在项目开发过程中,经常会遇到文件上传下载的问题。但在flex中由于安全沙箱的原因,flex程序不能直接访问本地文件。但是flex SDK中提供了FileReference和FileReferenceList两个类,可以通过这两个类来实现,这两个类位于flash.net包中。一

笑傲江湖 6917

【心得】Flex中的文件上传与下载

 【心得】Flex中的文件上传与下载     和传统的JSP一样,在flex中,有的时候也需要实现文件上传和下载的功能,但是在flex里文件的上传和下载的实现相对来说比较复杂,如何实现,请看下面。    由于flex是一个比较新的技术,在研究的时候,还是按着JSP的方式去尝试,在开始之初,主要有以下几种思路:    A、利用ftp的方式进行文件的上传和下载,需要利用flex的soc

没有天赋的IT人 1086

Flex+java实现文件上传

用了两天时间学习了下Flex和java配合实现文件上传,找了个小例子。前端当然是flex,后台使用servlet,把代码贴上来,备忘吧: FileUpload.java:import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.util.Iterator;i

duran1986的专栏 7063

flex filereference upload php,使用 Flex 上传文件

layout="vertical" verticalAlign="middle" horizontalAlign="center">global {fontSize : 12;}// 先搞 1 个 FileReferenceprivate var file:FileReference = new FileReference();// 上传状态指示, 和下面的文本框绑定[Bindable]pr...

weixin_42116713的博客 139

Flex实现多文件上传之一:前台部分

2008-04-24 21:43 从网上搜索了一些有关Flex上传文件的文章,如: Flex 2.0 从零开始实现文件上传 Flex2.0文件上传功能(Flex2.0正式版) 一般的原理都是使用FileReference来实现,而FileReference只是单个文件的上传,从上面的两个例子里也可以看得出。其实还 有一个和FileReference一样的用来实现多文件...

aiqixiao2017的博客 166

Flex4之基于Servlet的文件上传

Flex4之基于Servlet的文件上传<br />文章分类:Flash编程<br />关于flex上传功能的实现依赖于FileReference类。该 类实例对象的创建有两种方法:使用var myFileReference = new FileReference(); FileReferenceList.browse()。使用browse()或者FileReference.browse()方法可以打开上传窗口。<br />下面部分资源来自互联网,一个简单的上传组件代码,包括了监听 Progress

huangjiangloveyou的专栏 871
上一篇: Flex中使用FileReference类下载文件
下一篇: Java Pojo转flex vo 工具类
narutobing
博客等级 码龄18年 2粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值