0

コード フローは次のとおりです。

ユーザーがページの「詳細のダウンロード」ボタンをクリック -> ボタンのクリック ハンドラーで s:CallResponder を使用して RPC メソッドの呼び出しが行われる -> RPC メソッドがファイルをダウンロードする場所から URL を生成して返す -> の成功イベント ハンドラーCallResponder は FileRefrence.download() を使用してファイルをダウンロードする URL を取得しますが、次のエラーをスローします。

エラー: エラー #2176: ポップアップ ウィンドウを表示するアクションなど、特定のアクションは、マウスのクリックやボタンの押下など、ユーザーの操作によってのみ呼び出される場合があります。flash.net::FileReference/download() で

コードは次のとおりです。

<fx:Script>
    <![CDATA[            

        import mx.rpc.CallResponder;
        import mx.rpc.events.FaultEvent;
        import mx.rpc.events.ResultEvent;

        protected function downloadButtonClickHandler(event:MouseEvent):void 
        { 
                var web_service:IWeb_service = Web_service.getInstance(); 
                getDetails.token = web_service.getURLDetails();
        } 

        public function onGetDetailsResult(event:ResultEvent):void
        {

            var response:URLResponse = event.result as URLResponse;
            if(response != null && response.url != null)
            { 
                var request:URLRequest = new URLRequest(response.url);
                fileReference.download(request, "test.html");
            }
        }

        public function onGetDetailsFault(event:FaultEvent):void
        {
            Alert.show("Error in downloading details");
        }
    ]]>    
</fx:Script>

<fx:Declarations>  
    <net:FileReference id="fileReference" />
    <s:CallResponder id="getDetails" result="onGetDetailsResult(event)" fault="onGetDetailsFault(event)"/>

</fx:Declarations>
<s:HGroup width="100%" height="100%">

       <s:Button label="Download Details" id="downloadButton" 
                          click="downloadButtonClickHandler(event)" /> 
</s:HGroup>

File FileReference には、彼のケースでは発生していないユーザー操作が必要であるため、これを達成する他の方法はありますか?

4

3 に答える 3

1

FileReference事前にファイルを入手していない場合、セキュリティ上の制限により、経由でファイルをダウンロードする方法はないと思います。

私が知る限り、このシナリオを処理するには 2 つのオプションがあります。

  1. FileReference別のボタン クリック (アラート ダイアログなど) によるダウンロードのトリガー。
  2. 経由でブラウザの標準ダウンロードを開始しますnavigateToURL(myURLRequest, "_self");

お役に立てれば。

于 2011-10-03T10:51:06.043 に答える
0

ユーザーがダウンロードボタンをクリックする前に呼び出しweb_service.getURLDetails()ます(たとえば、flexアプリケーションが作成された後)。URLがロードされたかどうかをメソッドでチェックインするdownloadButtonClickHandlerか、無効なボタンから開始して、URLがロードされた後にステータスを有効に変更することができます。

于 2011-09-28T09:19:35.343 に答える
0
var url:String = "test.xls";

var fileReference:FileReference = new FileReference; 
var urlRequest:URLRequest = new URLRequest(url);
navigateToURL(urlRequest,"_new");

fileReference.download(urlRequest);
于 2011-10-17T13:06:07.240 に答える