Flex中的下载

背景:由于我目前的公司是电信类项目,采用ext+flex TWaver做的页面,ext已经做好了上传和下载,我是相当于2次开发做一个flex 的附件查看和下载,所以我开始是把ext那边的a标签的内容直接写在在label.htmlText中,结果发现在flex TWaver的容器的页面中,加载一次页面只能下载一个文件,要想在下载第二个,只能关掉这个页面在重新打开。然后只能采用felx提供的下载类。以下代码大部分是在网上找的,但这里与他们的不同,最关键是**file.download(URLRequest对象,浏览器保存窗口中的文件名);**这个“**浏览器保存窗口中的文件名**”网上其他人都没讲,这个可是害的我**好苦**啊!废话不多说了,以下是详细代码:
```
private function fileDownload(event:Event):void{
		        	var attachmentLabel:Label = event.currentTarget as Label;
		        	var circuitConfigurationServiceImpl:CircuitConfigurationServiceImpl = 
                		BeanController.getInstance().getBean("circuitConfigurationService") as CircuitConfigurationServiceImpl;
                	//新建请求地址
		        	var downloadURL:URLRequest = new URLRequest(circuitConfigurationServiceImpl.serviceUrl + "/downloadAttachment.html?attachmentId=" +
                		attachmentLabel.id);
                	//实例文件上传、下载对象。
		            var file:FileReference = new FileReference();
		            //监听下载成功事件。
		            file.addEventListener(Event.COMPLETE, fileCompleteHandler);
//		            configureListeners(file);//这个函数里有整个下载或上传的步骤的事件,API文档中也有。
		            //虽然 Flash Player 没有限制可上载或下载的文件的大小,但是播放器正式支持的上载或下载文件大小最大为 100 MB。
		            //第一个参数为请求地址对象,第二个参数为浏览器保存窗口中的文件名(这个文件不是在后台设置的,就是在这)
		            file.download(downloadURL,attachmentLabel.text);
		            //为了修改浏览器保存窗口中的文件名,在网上找资料,并自己看文档、测试,一下午加一晚上都没搞定,就在要放弃的时候,
		            //突然就想到FileReference有没有其他下载方法或者download有没有其他参数,终于在凌晨1点10分左右终于测试成功,其他API文档中也有说明,有两个参数,但当时看的太着急,没注意,细节决定成败啊!!!希望各位同胞引以为戒。
		        } 
		        
		        private function configureListeners(dispatcher:IEventDispatcher):void {
		            dispatcher.addEventListener(Event.CANCEL, cancelHandler);
		            dispatcher.addEventListener(Event.COMPLETE, fileCompleteHandler);
		            dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
		            dispatcher.addEventListener(Event.OPEN, openHandler);
		            dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
		            dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
		            dispatcher.addEventListener(Event.SELECT, selectHandler);
		        }
		        
		       	private function fileCompleteHandler(event:Event):void{
		       		Alert.show("下载成功:"+event);
		      	}
```
上传代码还有点bug,正在排查中,过几天就更新这篇文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值