Flash CS3 ドキュメンテーション |
|||
| ActionScript 2.0 リファレンスガイド > ActionScript クラス > FileReference (flash.net.FileReference) > upload (FileReference.upload メソッド) | |||
ユーザーが選択したファイルをリモートサーバーにアップロードする処理を開始します。Flash Player ではアップロードまたはダウンロードできるファイルのサイズに制限はありませんが、このプレーヤーが正式にサポートしているアップロードまたはダウンロードのサイズは最大 100 MB です。このメソッドを呼び出す前に、FileReference.browse() または FileReferenceList.browse() を呼び出す必要があります。
リスナーは、アップロードが進行中なのか、成功したのか、失敗したのかを示すイベントを受け取ります。FileReferenceList オブジェクトを使用すると、ユーザーが複数のファイルを選択してアップロードすることが可能になりますが、ファイルは 1 つずつアップロードする必要があります。この操作を実行するには、FileReference オブジェクトの FileReferenceList.fileList 配列で繰り返し処理を実行します。
FileReference.upload() 関数と FileReference.download() 関数はノンブロッキング処理を行います。これらの関数は呼び出された後、ファイル転送が完了する前に返されます。さらに、FileReference オブジェクトがスコープ外に移動した場合、そのオブジェクトに対して完了していないアップロードまたはダウンロードは、スコープから離れた時点でキャンセルされます。アップロードまたはダウンロードの続行を期待できる間は、FileReference オブジェクトがスコープ内に残ることを確認してください。
ファイルは、url パラメータに渡された URL にアップロードされます。URL は、アップロードを許可するよう設定されたサーバースクリプトである必要があります。Flash Player は、HTTP POST メソッドを使用してファイルをアップロードします。アップロードを処理するサーバースクリプトは、次のエレメントを持つ POST リクエストを想定しています。
multipart/form-data の Content-Type エレメントname 属性がデフォルトで "Filedata" に、filename 属性が元のファイル名に設定された Content-DispositionエレメントPOST リクエストの例を次に示します。
Content-Type: multipart/form-data; boundary=AaB03x --AaB03x Content-Disposition: form-data; name="Filedata"; filename="example.jpg" Content-Type: application/octet-stream ... contents of example.jpg ... --AaB03x--
POST パラメータをサーバーに送信するには、FileReference.postData の値に任意のパラメータを設定します。URL にパラメータを追加することにより、upload() 呼び出しを使ってサーバーに GET パラメータを送信できます。
アップロード対象のファイルが約 10 KB を超える場合、Windows 用の Flash Player は、転送が成功するかどうか検証するために、実際のファイルをアップロードする前にテストアップロードとして中身がゼロの POST を送信します。実際のファイル内容は、2 番目の POST に含まれます。ファイルのサイズが小さい場合、Flash Player は、アップロード対象のファイルを含む POST のアップロードのみを実行します。Macintosh 用 Flash Player は現在、POST テストアップロードを行っていません。
メモ : サーバーでユーザー認証が必要な場合、ブラウザ内で実行される、つまり、ブラウザプラグインまたは ActiveX コントロールを使用する SWF ファイルでのみ、認証用のユーザー名とパスワードをユーザーが入力できるダイアログボックスを表示できます。ただし、それはダウンロードの場合のみです。プラグインまたは ActiveX コントロールを使用するアップロードの場合、および、スタンドアローンまたは外部 Player を使用するアップロードとダウンロードの場合、ファイル転送は失敗します。
このメソッドを使用するときは、Flash Player セキュリティモデルを考慮してください。
詳細については、次の参照先を参照してください。
対応バージョン : ActionScript 1.0、Flash Player 8
url:String - HTTP POST 呼び出しを使ってアップロードを処理するよう設定されたサーバースクリプトの URL です。この URL では、HTTP または HTTPS (セキュアアップロード) を使用できます。
uploadDataFieldName:String - アップロード POST のファイルデータに先行するフィールド名です。このパラメータは、Flash Player 9.0.28.0 以降でのみサポートされています。uploadDataFieldName 値は、null 以外、空白以外のストリングである必要があります。uploadDataFieldName のデフォルト値は "Filedata" です。
Content-Type: multipart/form-data; boundary=AaB03x --AaB03x Content-Disposition: form-data; name="Filedata"; filename="example.jpg" Content-Type: application/octet-stream ... contents of example.jpg ... --AaB03x--
testUpload:Boolean - テストファイルアップロードを要求するための設定です。testUpload が true でファイルの大きさが 10 KB を超える場合、Flash Player は、コンテンツ長 0 でテストファイルアップロードの POST を試行します。テストアップロードの目的は、実際のファイルのアップロードが成功するかどうかと、サーバー認証が必要な場合はそれが成功するかどうかをチェックすることです。testUpload のデフォルト値は false です。現時点では、テストアップロードは Windows 版でのみ行われます。
URL にパラメータを追加することにより、upload() 呼び出しを使ってサーバーに GET パラメータを送信できます (たとえば、http://www.myserver.com/upload.cgi?userID=jdoe)。
一部のブラウザでは、URL ストリングの長さに制限があるものがあります。長さが 256 文字を超える場合、一部のブラウザまたはサーバーでは失敗する場合があります。
Boolean - 次のいずれかの状況に合致する場合、false を返します。
FileReference.browse() がまだ正常に呼び出されていない場合、またはこのオブジェクトを使って FileReferenceList.browse() がまだその filelist 配列内で正常に呼び出されていない場合。url パラメータの形式が正しくなかった場合。次の例は、まずユーザーに対してアップロードするファイルを選択するよう促し、onSelect リスナーと onCancel リスナーを処理した後で、最終的に実際のファイルアップロードの結果を処理する upload() メソッドの実行形態を示します。
import flash.net.FileReference;
var allTypes:Array = new Array();
var imageTypes:Object = new Object();
imageTypes.description = "Images (*.jpg, *.jpeg, *.gif, *.png)";
imageTypes.extension = "*.jpg; *.jpeg; *.gif; *.png";
allTypes.push(imageTypes);
var listener:Object = new Object();
listener.onSelect = function(file:FileReference):Void {
trace("onSelect: " + file.name);
if(!file.upload("http://www.yourdomain.com/yourUploadHandlerScript.cfm")) {
trace("Upload dialog failed to open.");
}
}
listener.onCancel = function(file:FileReference):Void {
trace("onCancel");
}
listener.onOpen = function(file:FileReference):Void {
trace("onOpen: " + file.name);
}
listener.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
trace("onProgress with bytesLoaded: " + bytesLoaded + " bytesTotal: " + bytesTotal);
}
listener.onComplete = function(file:FileReference):Void {
trace("onComplete: " + file.name);
}
listener.onHTTPError = function(file:FileReference):Void {
trace("onHTTPError: " + file.name);
}
listener.onIOError = function(file:FileReference):Void {
trace("onIOError: " + file.name);
}
listener.onSecurityError = function(file:FileReference, errorString:String):Void {
trace("onSecurityError: " + file.name + " errorString: " + errorString);
}
var fileRef:FileReference = new FileReference();
fileRef.addListener(listener);
fileRef.browse(allTypes);
browse (FileReference.browse メソッド), browse (FileReferenceList.browse メソッド), download (FileReference.download メソッド), fileList (FileReferenceList.fileList プロパティ)
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00001679.html