2012-01-10 4 views
0

現在Flex 3.0で作業中です。エラーが発生しています(スクリーンショットは以下のとおりです)。私はFlash Playerバージョン10.0を使用していますFileReference.saveメソッドでエラーが発生する

現在、私はHTTPServiceを呼び出しています。そのHTTPServiceのresultHandlerでは、メソッドfilereference.save()でエラーが発生しています。このメソッドは、MouseEventイベントまたはKeyboardイベントが発生したときにのみ呼び出されるためです。

この状況を克服する、つまり言い換えればResultHandlerのfilereference.saveメソッドを呼び出す方法はありますか。

enter image description here

+1

MouseEventまたはKeyboardEventを「手動で」ディスパッチしようとしましたか? – RIAstar

+0

いいえ、私はそれを使用したことはありません。もし可能であれば、私にそのようなコードやURLを教えてください?あなたの助けは私のために貴重です。 –

+1

MouseEventからコードをディスパッチすることはできません – OXMO456

答えて

1

できません。あなたはそれを得るためにユーザーのクリックボタンが必要です。 MouseEventをディスパッチすることは役に立たない。 Romiのアプローチcoudはあなたを助けます。しかし、ボタンクリックのためにセキュリティ上の理由からそれを行う必要があります。

私が行ったことは、結果にあったファイルの場所を取得し、htmlページのように開きます。その後、それをダウンロードすることができます。私はRomiが言ったようにユーザーにボタンをクリックさせる以外の解決策は見当たりません。

var u:URLRequest = new URLRequest(event.result); 
navigateToURL(u, "_blank"); 
+0

こんにちは私はevent.resultの代わりに文字列としてcsvデータを持っています。文字列は "a、b、c、d、e"のようになります。私がする必要があるのは、その文字列をFullReport.csvという名前の.csvファイルに保存することです。 –

+1

サーバーでファイルを生成するのはどうですか?あなたのHTTPサービスですべての文字列を返す代わりに、私が前に言ったことを適用するためにファイルのURL /名前を返してください。私はその問題を再び抱えていました。私はそのようにしなければなりませんでした。ファイルが4GBのように大きくて、リモートオブジェクトや何かを介してそれを転送することは不可能でした。ユーザーからのクリックが必要です。あなたがいないと、あなたはいつもそのエラーになります。 .saveメソッドを使用する場合は、そのように使用する必要があります。 –

5

その理由は、あなたがもはやユーザーによって生成されたイベントを経て、実際にこれを要求しているユーザの場合を除いて、自動的にファイルの保存ポップアップの表示をトリガするために許可されているということではありません。 http://www.bogdanmanate.com/2010/05/12/flex-error-2176-when-using-filereference/

郵便で説明されている解決方法を使用して、つまりはい/いいえアラートを使用して、ファイルのロードが完了したことをユーザーに示すことができます。ダウンロードの準備が整ったことを確認して、ローカルに保存することを確認するように依頼します。あなたは間違っていると思うかもしれませんが、それは本当にセキュリティに関するものです。イベントをトリガーする方法がわかったら、このUIの問題をバイパスする方法を見つけ出すことができます。

素晴らしい一日を!

0

ファイルをサーバーに送信してから、サーバーがクライアントに送信して、ブラウザーの保存/開くダイアログボックスを表示させることもできます。しかし、ファイルがフレックスで作成されている場合、これは帯域幅上では理想的ではありません。

関連する問題