FileReferenceを使ってみる (1)

FileReferenceクラスを使ってみるよ。 :boy:
ダウンロードできるかな?

:caution: 要 Flash Player 8 以上

This movie requires Flash Player 9.0.0

_root にムービークリップ(インスタンス名: downloadBtn) を配置。

_root 第1フレームに
import flash.net.FileReference;

var fileRef:FileReference = new FileReference();
var fileListener:Object = new Object();
fileListener.onSelect = function(file:FileReference):Void {
  // 参照・保存ダイアログで開く・保存を選択したときの処理
};
fileListener.onCancel = function(file:FileReference):Void {
  // 参照・保存ダイアログでキャンセルを選択したときの処理
};
fileListener.onOpen = function(file:FileReference):Void {
  // ダウンロード開始時の処理
};
fileListener.onProgress = function(file:FileReference, nLoadedBytes:Number, nTotalBytes:Number):Void {
  // ダウンロード中の処理
};
fileListener.onComplete = function(file:FileReference):Void {
  // ダウンロード完了時の処理
};
fileListener.onIOError = function(file:FileReference):Void {
  // 入出力エラーでダウンロード失敗時の処理
};
fileListener.onSecurityError = function(file:FileReference, error:String):Void {
  // セキュリティエラーでダウンロード失敗時の処理
};
fileRef.addListener(fileListener);

downloadBtn.onRelease = function():Void {
  var fileName:String = "wallpaper"+wallpaper+".jpg";
  var downloadName:String = "wallpaper"+wallpaper+".jpg";
  var dialog:Boolean = fileRef.download(fileName, downloadName);
  if (!dialog) {
    // ダイアログボックス表示失敗時の処理
  }
};
と記述。


download (FileReference.download メソッド)

public download(url:String, [defaultFileName:String]) : Boolean

リモートサーバーからファイルをダウンロードするためのダイアログボックスを表示します。Flash Player は最大100MBのファイルをダウンロードできます。

使用できるバージョン
ActionScript 1.0、Flash Player 8
パラメータ
url:String
ローカルコンピュータにダウンロードするファイルの URL。解析するサーバースクリプト用に、URL にパラメータを追加することにより、download() 呼び出しを使ってサーバーにデータを送信できます。(例 : http://www.myserver.com/picture.jpg?userID=jdoe) 一部のブラウザでは、URL ストリングの長さに制限があります。長さが 256 文字を超える場合、一部のブラウザまたはサーバーでは失敗する場合があります。
defaultFileName:String (オプション)
ダウンロードするファイルとしてダイアログボックスに表示するデフォルトファイル名です。このストリングに、/ \ : * ? " < > | % という文字を含めることはできません。このパラメータを省略すると、リモート URL のファイル名が構文解析されて、デフォルトとして使用されます。
戻り値
Boolean – ユーザーがファイルを選択できるダイアログボックスが表示される場合は true。ダイアログボックスが表示されない場合、このメソッドは false を返します。ダイアログボックスを表示できない原因は次のとおりです。
 ● url パラメータの値を渡さなかった場合。
 ● 渡されたパラメータの形式が正しくなかった場合。
 ● url パラメータの長さが0の場合。
 ● セキュリティ侵害が発生した場合。つまり、SWF ファイルが、そのセキュリティサンドボックス外にあるサーバーのファイルにアクセスしようとした場合。
 ● 既に他のブラウズセッションが進行中であった場合。ブラウズセッションは、FileReference.browse()、FileReferenceList.browse()、または FileReference.download() によって開始できます。
 ● プロトコルが HTTP または HTTPS でなかった場合。


このメソッドは、まず、オペレーティングシステムのダイアログボックスを表示して、ユーザーにファイル名を入力してもらった後、ファイル名の保存先となるローカルコンピュータ上の場所を選択してもらいます。ユーザーが保存場所を選択し、[保存]などをクリックして、ファイルをローカルに保存することを確認すると、リモートサーバーからのダウンロードが開始します。リスナーは、ダウンロードが進行中なのか、成功したのか、失敗したのかを示すイベントを受け取ります。download() を呼び出した後のダイアログボックスやダウンロード処理の状態を確認するには、ActionScript で onCancel、onOpen、onProgress、および onComplete などのイベントリスナーを使用してイベントを待機する必要があります。


[修正] (07/04/07 Sat 10:42)
微妙に修正。配置も若干変更。