用Flash download组件下载文件时,大致步骤如下:
// 定义一个FileReference 对象
var downloadFile:FileReference = new FileReference();
// 绑定downloadFile对象的Event.COMPLETE事件到completeHandle方法
downloadFile.addEventListener(Event.COMPLETE, completeHandle);
// 定义一个URLRequest 对象,服务器文件所在的具体路径
var downloadURL:URLRequest = new URLRequest("http://10.167.12.75:8080/FileUpload/OUTFILE/test.xls");
// 开始下载文件
downloadFile.download(downloadURL);
// completeHandle方法如下
private function completeHandle(event:Event):void {
Alert.show("下载成功");
}
=====================================================
如果光是这样,完全没有问题,可以顺利地从服务器上将文件下载下来
但是项目要求 文件的URL地址必须通过访问WebService取得,就是点了下载按钮后 先得访问WebService里的方法(传一些简单的参数),该方法会返回一个 文件的URL地址(如:http://10.167.12.75:8080/FileUpload/OUTFILE/test.xls),事实上我也成功地得到了该地址,但是按照上面的步骤却下载文件失败:
部分代码如下:
override public function successForward(successEvents:Array):void {// successForward方法是访问WebService成功后调用的方法
var event:ResultEvent = successEvents[0];// event 用来存放WebService成功后调用所 返回的参数
var result:ArrayList = new ArrayList();
if(event != null){ //当返回的结果不为空时
if (event.result != null){ // 当返回结果中的 result 属性值不为空时(正常时它的值是文件的URL路径)
downloadFile.addEventListener(Event.COMPLETE, completeHandle);// downloadFile对象我是定义在类变量中的,所以方法中未定义
var url = event.result;//调试结果显示url 是:http://10.167.12.75:8080/FileUpload/OUTFILE/test.xls
var downloadURL:URLRequest = new URLRequest();
downloadURL.url = url;
downloadFile.download(downloadURL);//****这里出问题了????
//Error: Error #2176: ポップアップウィンドウを表示するなどの特定のアクションは、例えばマウスをクリックしたりボタンを押したりして、ユ ーザによる相互作用が発生した場合にのみ呼び出されます。(中文:显示弹出窗口等的特定ACTION,例如点击鼠标、按下键什么的,只有通过用户发生相互作用时才被调用)
//completeHandle方法 这里就略去不写了...
}
}
}@@@@@@@@@@@@@@:郁闷!不知道是为什么,它说的'用户发生相互作用'到底是什么意思? 是用户与远程服务器端交互 还是只是与本机交互?
不明白,难道flash 的download组件是用HTTP协议,而WebService不是用的HTTP协议,这会有问题吗?
高手给点idea!
// 定义一个FileReference 对象
var downloadFile:FileReference = new FileReference();
// 绑定downloadFile对象的Event.COMPLETE事件到completeHandle方法
downloadFile.addEventListener(Event.COMPLETE, completeHandle);
// 定义一个URLRequest 对象,服务器文件所在的具体路径
var downloadURL:URLRequest = new URLRequest("http://10.167.12.75:8080/FileUpload/OUTFILE/test.xls");
// 开始下载文件
downloadFile.download(downloadURL);
// completeHandle方法如下
private function completeHandle(event:Event):void {
Alert.show("下载成功");
}
=====================================================
如果光是这样,完全没有问题,可以顺利地从服务器上将文件下载下来
但是项目要求 文件的URL地址必须通过访问WebService取得,就是点了下载按钮后 先得访问WebService里的方法(传一些简单的参数),该方法会返回一个 文件的URL地址(如:http://10.167.12.75:8080/FileUpload/OUTFILE/test.xls),事实上我也成功地得到了该地址,但是按照上面的步骤却下载文件失败:
部分代码如下:
override public function successForward(successEvents:Array):void {// successForward方法是访问WebService成功后调用的方法
var event:ResultEvent = successEvents[0];// event 用来存放WebService成功后调用所 返回的参数
var result:ArrayList = new ArrayList();
if(event != null){ //当返回的结果不为空时
if (event.result != null){ // 当返回结果中的 result 属性值不为空时(正常时它的值是文件的URL路径)
downloadFile.addEventListener(Event.COMPLETE, completeHandle);// downloadFile对象我是定义在类变量中的,所以方法中未定义
var url = event.result;//调试结果显示url 是:http://10.167.12.75:8080/FileUpload/OUTFILE/test.xls
var downloadURL:URLRequest = new URLRequest();
downloadURL.url = url;
downloadFile.download(downloadURL);//****这里出问题了????
//Error: Error #2176: ポップアップウィンドウを表示するなどの特定のアクションは、例えばマウスをクリックしたりボタンを押したりして、ユ ーザによる相互作用が発生した場合にのみ呼び出されます。(中文:显示弹出窗口等的特定ACTION,例如点击鼠标、按下键什么的,只有通过用户发生相互作用时才被调用)
//completeHandle方法 这里就略去不写了...
}
}
}@@@@@@@@@@@@@@:郁闷!不知道是为什么,它说的'用户发生相互作用'到底是什么意思? 是用户与远程服务器端交互 还是只是与本机交互?
不明白,难道flash 的download组件是用HTTP协议,而WebService不是用的HTTP协议,这会有问题吗?
高手给点idea!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货