SWFUpload 使用ガイドはこちらを参照してください:https://www.example.com/w3cnote/swfupload-guide.html

内容列表

  1. SWFUpload
  2. SWFUpload 版本 2
  3. 概览 (Overview)
  4. 入门( Getting Started)
  5. jsオブジェクト (SWFUpload JavaScript Object)
    1. 构造器(Constructor)
    2. グローバル変数と定数 (Globals and Constants)
      1. 【新增内容】instances
      2. movieCount
      3. 【新增内容】QUEUE_ERROR
      4. 【新增内容】UPLOAD_ERROR
      5. 【新增内容】FILE_STATUS
      6. 【新增】UPLOAD_TYPE
      7. 【新增内容】BUTTON_ACTION
      8. 【新增内容】CURSOR
      9. 【新增内容】BUTTON_WINDOW_MODE
      10. 【新增】RESIZE_ENCODING
      11. 【新增】onload
    3. 属性 Properties
      1. 【新增内容】customSettings
      2. movieName
    4. 方法 Methods
      1. addSetting不推荐 (deprecated)
      2. getSetting不推荐 (deprecated)
      3. retrieveSetting已移除 (removed in v2.1.0)
      4. destroy添加自2.1.0 (added in v2.1.0)
      5. displayDebugInfo
      6. selectFile
      7. selectFiles
      8. startUpload
      9. 【新增】startResizedUpload (added in v2.5.0)
      10. cancelUpload
      11. stopUpload
      12. 【新增】requeueUpload
      13. getStats
      14. setStats
      15. getFile
      16. 【新增】getQueueFile (added in v2.5.0)
      17. addPostParam
      18. removePostParam
      19. addFileParam
      20. removeFileParam
      21. setUploadURL
      22. setPostParams
      23. setFileTypes
      24. setFileSizeLimit
      25. setFileUploadLimit
      26. setFileQueueLimit
      27. setFilePostName
      28. setUseQueryString
      29. setDebugEnabled
      30. setButtonImageURL (added in v2.2.0)
      31. setButtonDimensions (added in v2.2.0)
      32. setButtonText (added in v2.2.0)
      33. setButtonTextStyle (added in v2.2.0)
      34. setButtonTextPadding (added in v2.2.0)
      35. setButtonDisabled (added in v2.2.0)
      36. setButtonAction (added in v2.2.0)
      37. setButtonCursor (added in v2.2.0)
    5. 【新增内容】事件 Events
      1. flashReady
      2. 【新增】swfUploadPreload
      3. 【新增】swfUploadLoadFailed
      4. 【新增】swfUploadLoaded
      5. 【新增】buttonAction
      6. fileDialogStart
      7. fileQueued
      8. 【新增内容】fileQueueError
      9. fileDialogComplete
      10. 【新增】uploadResizeStart
      11. uploadStart
      12. uploadProgress
      13. uploadError
      14. 【新增】uploadSuccess
      15. uploadComplete
      16. debug
    6. ユーティリティオブジェクト SWFUpload Utility Objects
      1. Settings Object
      2. Settings Description
      3. 【新】Support Object
      4. File Object
      5. Stats Object
  6. 相关插件 SWFUpload Plug-ins
  7. 【新增内容】已知问题 Known Issues

SWFUpload

SWFUpload最初はVinterwebb.se開発されたクライアント側ファイルアップロードツールです。JavaScriptとFlashを組み合わせ、ブラウザで従来のアップロードタグ <input type="file" /> よりも優れた機能(および優れたユーザーエクスペリエンス)を提供します。

SWFUpload の主な特徴:

  • ファイル選択ダイアログで複数のファイルを選択できます。
  • AJAXスタイルのアップロードで、ページを再リフレッシュする必要はありません。
  • アップロードプロセス中の各種イベント。
  • クライアント側で画像サイズを調整できます。
  • それが使用するクラス名前空間は、さまざまなJSライブラリ(i.e., jQuery、Prototype、など)と互換性があります。
  • Flash 9 および Flash 10 をサポート(v2.2.0以降、Flash 8のサポートは廃止)

SWFUploadの設計理念は、他のFlashベースのアップロードツールとは異なります。SWFUploadは開発者に可能な限り多くのUI制御能力を提供します。開発者はXHTML、CSS、JavaScriptを使用して、自社サイトのスタイルにより適合させることができます。アップロード状態を更新する一連のシンプルなJSイベントを提供し、開発者はこれらのイベントに基づいてWebページにファイルのアップロード進捗を表示できます。

しかし残念ながら、Flash Player 10 では、ファイル選択ダイアログを開くために(クリック後に)ボタンを使わざるを得ません。しかしSWFUploadは開発者がJSを使ってこのボタンのテキストなどの外観を変更できるようにします。

SWFUpload v2

SWFUpload v2 には多くの新機能が含まれ、安定性が向上し、Flash Player のいくつかのバグを解決し、有用なプラグイン(Plug-ins)を提供します。新機能は以下のとおりです:

  • Flash Player 10 のセキュリティ機能を利用可能。
  • アップロードと一緒に追加のデータをPOSTできます。
  • ファイルアップロードごとにPOSTデータを送信します。
  • 充実した各種イベント群。
  • すべての設定、パラメータを柔軟に構成できます。
  • サーバーから返信されたデータを取得できます。
  • アップロード中のファイルをキャンセルするのではなく、一時停止できます。
  • アップロードの順序を任意に変更できます。
  • 単一または複数ファイルの選択ダイアログを提供できます。
  • アップロードファイルのキューの長さ、ファイルサイズ、アップロードファイル数を制限できます。
  • 0バイトのファイルをより適切に処理できます。
  • 各ファイルにはアップロード確認イベントがあります。

Overview

HTML Upload

標準的なHTMLアップロードボックスは、ユーザーが単一のファイルを選択するためのボタンとテキストボックスのみを提供します。その後、フォーム送信を行います。ファイル全体がアップロード完了するまで、ファイルサイズやファイル拡張子を確認・検査することができず、アップロード中のフィードバックもほとんどありません。これにより、いくつかの使用上の不便が生じます。

しかし、従来のHTMLアップロードは非常にシンプルで、単一のステップであり、すべてのブラウザがそれをサポートしています。

SWFUpload

SWFUpload はFlashムービー(flash movie)を使用してファイルを選択およびアップロードします。ムービー内にはファイル選択ダイアログをアクティブにするカスタマイズ可能なボタンがあります。ファイル選択ダイアログでは、ユーザーは単一のファイルまたは複数のファイルを選択できます。選択できるファイルタイプも制限でき、開発者はユーザーが指定した適切なファイル(例: *.jgp;*.gif)のみを選択できるように制限できます。

ファイルを選択して確定をクリックすると、各ファイルが検証され、キューに入れられます。Flashがファイルをアップロードするとき、開発者が事前に定義したJavascriptイベントがトリガーされ、ページ内のUI表示を更新し、アップロード状態やエラー情報をリアルタイムに提供できます。

ファイルのアップロードはページやフォームから独立しています。各ファイルは個別に処理ページへアップロードされるため、サーバーはファイルを簡単かつ手軽に処理できます。Flashが提供するアップロードサービスにより、ページ全体を送信またはリフレッシュする必要がありません。これはAJAXプログラムに似ています。ページ内のFormフォームデータは、FLASHが制御するファイルアップロードとは別に処理されます。

入门 Getting Started

SWFUpload はドラッグ&ドロップ式のアップロードコントロールではありません。そのため、DOMとJSに関するある程度の知識が必要です。いくつかのデモが、swfUploadの能力と、それらを使用してタスクを完了する方法を示します。

SWFUpload は4つの部分から構成されます:

  1. 初期化と設定(JavaScript)
  2. JavaScript 库: SWFUpload.js
  3. Flashコントロール: swfupload.swf と swfupload_fp9.swf
  4. イベント処理メカニズム(JavaScript)

SWFUpload を使用する際の問題の多くは設定に起因します。誤ったイベント処理、Flash/ブラウザのバグ、またはサーバー設定です。

初期化と設定 Initialization and Settings

SWFUpload はページ上で初期化する必要があります。通常、JSのwindow.onloadイベント内で行われます。SWFUpload のコンストラクタは、Object型のオブジェクト(JS)を取得する必要があります。このオブジェクトのデータはコンストラクタに直接渡されます。

初期化されたSWFUploadオブジェクトの参照(reference)は保存しておく必要があります。(yukon: つまり変数に格納します。例の中のswfuのように)ファイルアップロードの開始や他の機能を制御する際にもこの参照が必要だからです。

例子:SWFUploadの初期化時に、匿名オブジェクトを直接渡してパラメータを構成します。

var swfu; window.onload = function () { swfu = new SWFUpload({ upload_url : "http://www.swfupload.org/upload.php", //处理上传文件的地址 flash_url : "http://www.swfupload.org/swfupload.swf", //核心功能swf的地址 flash9_url : "http://www.swfupload.org/swfupload_fp9.swf", file_size_limit : "20 MB" //文件大小限制 }); };

例子:SWFUploadの初期化時に、オブジェクト変数(settings_object)を使用して設定パラメータを渡すこともできます。

var swfu; window.onload = function () { var settings_object = { upload_url : "http://www.swfupload.org/upload.php", flash_url : "http://www.swfupload.org/swfupload.swf", flash9_url : "http://www.swfupload.org/swfupload_fp9.swf", file_size_limit : "20 MB" }; swfu = new SWFUpload(settings_object); };

js库 JavaScript library

swfuploadを使用する場合は、JSライブラリファイル(swfupload.js)を使用するページに含める必要があります。

SWFUpload オブジェクトが作成されると、多くの機能関数にアクセスできます。開発者はこれを使用してSWFUploadを制御できます。

例:swfupload.js ライブラリの導入方法

<script type="text/javascript" src="../www.swfupload.org/swfupload.js"></script>

例:必要に応じてSWFUploadを初期化します。

var swfu = new SWFUpload({ upload_url : "http://www.swfupload.org/upload.php", flash_url : "http://www.swfupload.org/swfupload.swf", flash9_url : "http://www.swfupload.org/swfupload_fp9.swf", button_placeholder_id : "spanSWFUploadButton" //yukon:这里有个新参数,将会使用js在id为"spanSWFUploadButton"的标签容器如span,div中创建一个"选择"按钮 });

【新規追加】フラッシュコントロール Flash Control

SWFUpload JSライブラリはFlashコントロール(swfupload.swf または swfupload_fp9.swf)を動的にロードできます。

Flashコントロールのファイルアドレスは、初期化時にSWFUpload設定オブジェクト内で定義する必要があります。

Flashコントロールは実際にはFlashの小さなムービーであり、ファイルの選択、検証、アップロードを制御できます。

これはページ上でユーザーにUIをカスタマイズできるボタンとして表示され、Flash Playerのバージョン(9、10)を検出して、ユーザーのプレイヤーバージョンに適したFlashコントロールを自動的にロードできます。

flash_url と flash9_url を使用して、swfupload.swf または swfupload_fp9.swf のパスを設定できます。(yukon:前述の例ですでに書かれています)

事件处理 The Event Handlers

開発者はSWFUploadのイベントを処理するための一連のJS関数を作成する必要があります。さまざまな重要なイベントが発生すると、これらの関数がトリガーされて実行されます。

SWFUploadのイベントを処理することで、開発者はアップロード進捗、エラー情報、アップロード完了などの情報フィードバックを提供できます。注意:開発者はSWFUpload.prototypeに格納されている関数を書き換えないでください。

例:SWFUploadのイベント処理と初期化。

// 上传开始(uploadStart)事件处理函数. 设置对象的"upload_start_handler"属性的值应是此函数的名字 var myCustomUploadStartEventHandler = function (file) { var continue_with_upload; if (file.name === "the sky is blue") { continue_with_upload = true; } else { continue_with_upload = false; } return continue_with_upload; }; // 上传成功( uploadSuccess )事件处理函数. 设置对象的"upload_success_handler"属性的值应是此函数的名字 var myCustomUploadSuccessEventHandler = function (file, server_data, receivedResponse) { alert("The file " + file.name + " has been delivered to the server. The server responded with " + server_data); }; // Create the SWFUpload Object var swfu = new SWFUpload({ upload_url : "http://www.swfupload.org/upload.php", flash_url : "http://www.swfupload.org/swfupload.swf", flash9_url : "http://www.swfupload.org/swfupload_fp9.swf", file_size_limit : "200 MB", upload_start_handler : myCustomUploadStartEventHandler, upload_success_handler : myCustomUploadSuccessEventHandler

swfupload js オブジェクト SWFUpload JavaScript Object

コンストラクタ Constructor

SWFUpload(settings object) //SWFUpload(設定オブジェクト)

返回:SWFUpload インスタンス

var swfupload_instance = new SWFUpload(settings_object);

グローバル変数と定数 Globals and Constants

SWFUploadはいくつかのグローバル変数と定数を定義しています。これらはSWFUploadの高度なアプリケーションやエラー処理に非常に役立ちます。これらはすべて読み取り専用です。

【新增内容】SWFUpload.instances

SWFUpload.instances は、ページ内のすべてのSWFUploadインスタンスへの参照を格納する配列オブジェクトです。Flash Playerはこのオブジェクト配列を使用して、正しいイベント処理関数を呼び出します。SWFUpload.instancesオブジェクト配列のインデックス(SWFUpload.instances[index])は、プロパティ movieName です。

SWFUpload.movieCount

SWFUpload.movieCountはグローバル変数で、ページ内で作成されたSWFUploadオブジェクトインスタンスの数を記録し、各Flashムービーに一意のmovieNameが割り当てられることを保証するために使用されます。

【新增内容】SWFUpload.QUEUE_ERROR

SWFUpload.QUEUE_ERROR は単純なJSオブジェクトで、キューのエラーコード(Queue Error code)の定数を含みます。ファイルキューのエラー(fileQueueError)が発生したときに、どのエラーコードが送信されるかを決定するために使用されます。

SWFUpload.QUEUE_ERROR = { QUEUE_LIMIT_EXCEEDED : -100, FILE_EXCEEDS_SIZE_LIMIT : -110, ZERO_BYTE_FILE : -120, INVALID_FILETYPE : -130 };
  • QUEUE_LIMIT_EXCEEDED - ユーザーがキューに追加したファイルが多すぎて、キューの最大長を超えていることを示します。ただし、キュー内のファイルがアップロードまたは削除されると、ユーザーはファイルをアップロード待機キューに追加できます。
  • FILE_EXCEEDS_SIZE_LIMIT - 制限されたファイルサイズ(file_size_limit)を超えたことを示します。
  • ZERO_BYTE_FILE - 選択されたファイルが0バイトであることを示します。Flash Playerは空のファイルを処理できません。Windowsショートカットアイコンをアップロードすると、このエラーも発生します。
  • INVALID_FILETYPE - 選択されたファイルの拡張子が許可されたものと一致しないことを示します。ユーザーがマウスでファイルを選択する代わりに、拡張子が一致しないファイル名を手動で入力すると、このエラーが発生する可能性があります。

【新增内容】SWFUpload.UPLOAD_ERROR

SWFUpload.UPLOAD_ERROR も単純なJS配列オブジェクトで、アップロードエラーコード定数(Upload Error code constants)を含みます。アップロードエラー(uploadError)イベントが発生したときに、どのエラーコードを送信するかを決定するために使用されます。

SWFUpload.UPLOAD_ERROR = { HTTP_ERROR : -200, MISSING_UPLOAD_URL : -210, IO_ERROR : -220, SECURITY_ERROR : -230, UPLOAD_LIMIT_EXCEEDED : -240, UPLOAD_FAILED : -250, SPECIFIED_FILE_ID_NOT_FOUND : -260, FILE_VALIDATION_FAILED : -270, FILE_CANCELLED : -280, UPLOAD_STOPPED : -290 };
  • HTTP_ERROR - サーバーへのアップロードを試みたが、サーバーが200ステータスコードを返さなかった場合(200は異常なしを意味します)。
  • MISSING_UPLOAD_URL - 没有设置上传地址(upload_url).
  • IO_ERROR - ファイルの読み取りおよび送信中に何らかのエラーが発生しました。通常は、サーバーが予期せず接続を閉じたときに発生します。
  • SECURITY_ERROR - セキュリティエラー。アップロードがセキュリティ制約に違反しています。比較的まれです。
  • UPLOAD_LIMIT_EXCEEDED - ユーザーが設定数より多くのファイルをアップロードしようとした。
  • UPLOAD_FAILED - アップロードの初期化中にエラーが発生しました。まれです。
  • SPECIFIED_FILE_ID_NOT_FOUND - ファイルのアップロードが開始されたが、そのファイルが見つかりませんでした。(yukon: ファイルを選択してキューに追加した後、ユーザーがディスク上でファイル名を変更したり、ファイルを削除した場合など)
  • FILE_VALIDATION_FAILED - アップロード開始時に何らかのエラーが返されました。
  • FILE_CANCELLED - アップロードをキャンセルしました(cancelUpload関数が呼び出されました)。
  • UPLOAD_STOPPED - アップロードを停止しました(stopUpload関数が呼び出されました)。
  • RESIZE_ERROR - 画像のサイズを調整するときに何らかのエラーが発生しました

【新增内容】SWFUpload.FILE_STATUS

SWFUpload.FILE_STATUS は、ファイルステータスコード定数(File Status code constants)を含むJS配列オブジェクトです。Fileオブジェクトのファイルステータスプロパティ(file status)を検出するために使用します。

SWFUpload.FILE_STATUS = { QUEUED : -1, IN_PROGRESS : -2, ERROR : -3, SUCCESS : -4, CANCELLED : -5 };
  • QUEUED - このファイルがアップロード待機キューにあることを示します
  • IN_PROGRESS - このファイルが現在アップロード中であることを示します
  • ERROR - このファイルがキューまたはアップロードエラーを引き起こしたことを示します
  • COMPLETE - このファイルがサーバーに正常に転送されたことを示します
  • CANCELLED - このファイルのアップロードがキャンセルされたことを示します(cancelUpload関数が呼び出されました)。

【新規追加】SWFUpload.UPLOAD_TYPE[機能:アップロードタイプの決定]

SWFUpload.UPLOAD_TYPE は、アップロードタイプ定数(Upload Type constants)を含むJS配列オブジェクトです。Fileオブジェクトのアップロードタイププロパティ(upload type property)を検出するために使用します。

  • NORMAL - 通常のSWFUploadアップロード
  • RESIZED - サイズ変更された画像がアップロードされ、データはHTTPのPOST方式で送信されます。

【新規追加内容】SWFUpload.BUTTON_ACTION[機能: ボタンをクリックした後に実行されるアクションを決定します]

SWFUpload.BUTTON_ACTIONはJS配列オブジェクトで、ボタンアクションコード定数(button action code constants)を含みます。ボタンアクション(button_action)の値の設定に使用され、Flashムービー内の対話型ボタンのさまざまなマウス操作に対する関連応答を設定できます。

SWFUpload.BUTTON_ACTION = { SELECT_FILE : -100, SELECT_FILES : -110, START_UPLOAD : -120 }

  • SELECT_FILE - ボタンをクリックすると、単一ファイルの選択ダイアログが開きます。(JSで設定された)マウスクリックイベントはトリガーされません。
  • SELECT_FILES - ボタンをクリックすると、複数ファイルの選択ダイアログが開きます。(JSで設定された)マウスクリックイベントはトリガーされません。
  • START_UPLOAD - ボタンをクリックすると、アップロードキューの最初のファイルがアップロードされます。(JSで設定された)マウスクリックイベントはトリガーされません。
  • NONE - この場合、(JSで設定された)マウスクリックイベントがトリガーされます。
  • JAVASCRIPT - NONEと同じです。この値は非推奨です。

【新規追加内容】SWFUpload.CURSOR[機能: マウススタイルを変更します]

SWFUpload.CURSOR はJS配列オブジェクトで、ボタンのカーソル定数を含みます。ボタンカーソル(button_cursor)の値の設定に使用され、マウスがボタンを指しているときのマウススタイルを変更します。

SWFUpload.CURSOR = { ARROW : -1, HAND : -2 }
  • ARROW - カーソルは矢印ポインタとして表示されます
  • HAND - カーソルが手の形になる

【新規追加】SWFUpload.WINDOW_MODE[機能:ムービーの表示モード]

SWFUpload.WINDOW_MODE は、ボタンムービーのウィンドウモードパラメータ定数(button movie wmode parameter constants)を含むJS配列オブジェクトです。ブラウザにFlashムービーの表示方法を指示するために使用します。

一部の WINDOW_MODE/WMODE 設定は、ブラウザの問題を引き起こす可能性があります。詳細は次を参照してください。Known Issues.

SWFUpload.WINDOW_MODE = { WINDOW : "window", TRANSPARENT : "transparent", OPAQUE : "opaque" };
  • WINDOW はデフォルトモードです。Flashムービーはページの最前面に描画されます。
  • OPAQUE は、ページ上の他の要素がこのボタンムービーを覆うことを許可します。
  • TRANSPARENT 透明。ボタンの背景が透明になり、HTML要素がその下に表示されることを許可します。

【新規追加】SWFUpload.RESIZE_ENCODING[機能:画像エンコード形式の指定]

SWFUpload.RESIZE_ENCODING は、リサイズエンコーディングタイプ定数(resize encoding type constants)を含む JS 配列オブジェクトです。リサイズされた画像のエンコード形式を示すために使用します。

  • JPEG - JPEGエンコード形式
  • PNG - PNGエンコード形式

【新規】SWFUpload.onload [用途: ページの読み込み完了後の操作関数を定義する]

onload は、swfobject の addDOMLoadEvent メソッドで実行できる関数です。このメソッドを使うことで、ページの読み込み完了後にスクリプトを実行できます。ただし、他の類似のメソッド(jQuery フレームワークの "Ready" や Prototype ライブラリの dom:loaded など)を使用していないことを確認してください。

SWFUpload.onload = function () { new SWFUpload(settingsObject); }

上記の例では、最も早いブラウザの読み込みイベントで SWFUpload を初期化します。ほとんどの DOM 準備完了イベント(DOMReady event)の実行は、window.onload イベントの直後に行われます。

属性 Properties

以下の属性リストの説明に従って、これらの属性を使用してください。読み取り専用または書き込み専用の属性を誤って使用すると、SWFUpload エラーが発生します。

【新規内容】customSettings (読み書き可能) [用途: 開発者のカスタム設定]

「カスタム設定」プロパティ(customSettings)はJSの空オブジェクトです。SWFUploadインスタンスに関連するデータを格納するために使用されます。その内容は、設定オブジェクトのcustom_settingsプロパティを使用して初期化できます。

Example:

// 初始化 SWFUpload 对象时使用一些自定义设置 var swfu = new SWFUpload({ custom_settings : { custom_setting_1 : "custom_setting_value_1", custom_setting_2 : "custom_setting_value_2", custom_setting_n : "custom_setting_value_n", } }); swfu.customSettings.custom_setting_1 = "custom_setting_value_1"; // 改变一个已有的自定义设置 swfu.customSettings.myNewCustomSetting = "new custom setting value"; // 添加一个新的自定义设置 // 用一个全新的对象来重写自定义设置 swfu.customSettings = { custom_setting_A : "custom_setting_value_A", custom_setting_B : "custom_setting_value_B" };

カスタム設定オブジェクト(customSettings object)に格納された値は、イベント処理関数から簡単にアクセスできます。(yukon:このプロパティは JS の動的特性を利用して、開発者に高度な開発の自由を提供します)

function uploadSuccess(file, serverData, receivedResponse) { if (this.customSettings.custom_setting_A === true) { alert("Checked the custom setting!"); } }

movieName(読み取り専用)[機能:SWFUploadインスタンスの一意の識別子を格納]

特定のSWFUploadインスタンスの一意の識別名を含みます。この値はFlashに渡され、AS-JS間のやり取りを支援します。SWFUpload.instances配列に格納されているインスタンスのインデックスに使用されます。これを変更すべきではなく、また変更できません。

方法 Methods

以下のメソッドは SWFUpload を操作するために使用します。一部のメソッドは DOM 要素のクリックイベントにバインドでき、その他のメソッドは SWFUpload 内部のイベント処理で呼び出されます。

object addSetting(setting_name, value, default_value)

不赞成使用 The addSetting function sets a setting value. If the value is undefined then the default_value is used. The function is used by SWFUpload

addSetting returns the value that was stored in the setting.

object getSetting(setting_name)

不赞成使用 The getSetting function retrieves the value of a setting. If the setting is not found an empty string is returned.

object retrieveSetting(setting_value, default_value)

v2.1.0 で中移除 The retrieveSetting function is similar to the addSetting function except it does not modify the internal settings object. retrieveSetting returns the setting_value unless it is undefined in which case it returns the default_value

This is a utility function.

bool destroy() [機能:SWFUploadインスタンスを破棄する]

v2.1.0 から追加

SWFのDOM要素を削除し、SWFUploadの内部参照を破棄します。ページ内のSWFUploadインスタンスを完全に削除するために使用します。IEでのメモリリーク問題を防ぎます。

正常に削除された場合はtrueを返します。SWFUploadインスタンスの状態にエラーを引き起こす問題が発生した場合はfalseを返します(Returns false if any error occurs leaving the SWFUpload instance in an inconsistent state)。

void displayDebugInfo()[機能:デバッグ情報を出力する]

デバッグイベントでは、displayDebugInfo() が SWFUpload 設定を出力します。初期化時に debug 設定が true に設定されている場合、この関数は自動的に呼び出されます。

void selectFile()

推奨されません。Flash Player 10 と互換性がありません。

selectFile causes the Flash Control to display a File Selection Dialog window. A single file may be selected from the Dialog window.

Calling selectFile begins the File Event Chain.

void selectFiles()

推奨されません。Flash Player 10 と互換性がありません。

selectFiles causes the Flash Control to display a File Selection Dialog window. A multiple files may be selected from the Dialog window.

Calling selectFiles begins the File Event Chain.

void startUpload(file_id)【機能:ファイルのアップロードを開始】

startUpload は file_id を受け取ってファイルをアップロードします。file_id 値を渡さない場合は、デフォルトでアップロード待ちキューの最初のファイルをアップロードします。

startUploadを呼び出すと、アップロードイベントチェーン(the Upload Event Chain)がトリガーされます。

【新增】void startResizedUpload(file_id, width, height, encoding, quality, allowEnlarging)【用途: 画像サイズ調整機能付きアップロード】

startResizedUploadはfile_idパラメータを受け取り、ファイルをアップロードします。SWFUploadは(Flashがサポートする画像形式の場合)ファイルの幅・高さなどの設定を調整しようとします。画像形式がサポートされていない場合、アップロードエラー(uploadError)が発生します。

width と height パラメータは、画像の最大幅と高さを設定するために使用します。ただし、調整中は画像の縦横比が維持されます。

encoding の値は、SWFUpload.RESIZE_ENCODING 内に存在する定数でなければなりません。

quality は JPEG 形式画像の品質を調整する場合のみ使用できます。許容範囲は 0~100 です。この範囲外の場合は、強制的に 0 または 100 に設定されます。

allowEnlarging パラメータは、SWFUpload が元の画像の拡大を許可するかどうかを定義します。(デフォルトは true)元の画像の幅と高さが前述の width と height より小さい場合に適用されます。この値を false に設定すると、画像はエンコードされますが、拡大はされません。

startResizedUploadメソッドを呼び出すと、通常のアップロードイベントチェーンが発生します。ただし、Flash Playerは定期的に uploadProgress イベントを提供しません。SWFUploadは、シミュレートされた 0% と 100% のアップロード進行イベント(uploadProgress events)のみを送信します。

リサイズされた画像は POST 方式でデータを送信します。(FILE のようにではなく)Flash Player 10 でセキュリティ機能が導入されたためです。画像サイズ調整機能付きのアップロード用PHP処理ページは、通常のアップロード用PHP処理ページとは異なります:

$resizedImageData = $_POST["Filedata"]; // 服务器端以$_POST方式接收数据而不是 $_FILE $fileHandle = fopen("image.jpg", "w"); //以file系列操作函数来存储图片 fwrite($fileHandle, $resizedImageData); fclose($fileHandle);

void cancelUpload(file_id, trigger_error_event)【機能:アップロードを削除】

cancelUpload は file_id パラメータを受け取り、1 つのファイルのアップロードを削除します。このファイルはアップロード待ちキューから削除されます。

file_id を渡さない場合、デフォルトでアップロードキュー内の最初のファイルがキャンセルされます。

オプションパラメータのtrigger_error_eventがfalseに設定されている場合、uploadErrorイベントはトリガーされません。

void stopUpload()【機能:ファイルのアップロードを停止する】

stopUpload は現在アップロード中のファイルを停止し、アップロード待ちキューに戻します。(yukon:削除とは異なり、このファイルのアップロードをキャンセルしますが、アップロードキューからは削除されません)

stopUpload を呼び出すとき、アップロード中のファイルがある場合、uploadError イベントがトリガーされます。このときアップロード中のファイルがない場合は、何も操作は行われず、イベントもトリガーされません。

【新增】bool requeueUpload(file_id or index)【機能:再エンキュー】

requeueUpload は、以前キューに入れられたファイルをアップロード待ちキューに再度追加します。

ファイルが見つからない場合、またはアップロード中の場合は、false を返します。

注意: 再入隊されたファイルは、ファイルサイズ、キューのサイズ、総アップロード数などの制限を再度チェックされません。ファイル参照がまだ存在する場合は、ファイルがキューに追加されるだけです。

object getStats()【機能:現在のステータスオブジェクトを返す】

ステータスオブジェクト(stats object)を返します。

void setStats(stats_object)【用途: ステータスオブジェクトの設定または変更】

ステータスオブジェクト(Stats Object)を設定または変更します。アップロード完了後にアップロード成功数や失敗数を変更したい場合は、このメソッドを使用できます。

object getFile(file_id|index)【用途: キュー内の特定のファイルオブジェクトを取得する】

getFile は、file id(ファイルオブジェクトの id)または file index(ファイルオブジェクトの index プロパティ)を受け取り、キュー内のファイルオブジェクトを返します。

getFile に file_id を渡すと、キュー内のファイルのみが取得可能です。ファイルが見つからない場合は null を返します。

getFileにindexを渡すと、キューへの追加を試みたすべてのファイル(キュー追加時にエラーが発生したファイルも含む)を取得できる可能性があります。indexが範囲外の場合はnullを返します。

【新增】object getQueueFile(file_id|index)【用途: アップロード待ちキュー内の特定のファイルオブジェクトを返す】

getQueueFile は、アップロード待ちキューから単一のファイルオブジェクトを返すために使用します。具体的には、file id(ファイルオブジェクトの id)または file index(ファイルオブジェクトの index プロパティ)を受け取り、キュー内のファイルオブジェクトを返します。index は 0 から始まります。

getQueueFile に file_id を渡すと、アップロード待ちキュー内のファイルのみが取得可能です。ファイルが見つからない場合は null を返します。

getQueueFile に index を渡すと、アップロード待ちキュー内のファイルのみが取得できます。例: getQueueFile(0) はアップロード待ちキューの先頭にあるファイルオブジェクトを返します。startUpload 関数を呼び出すと、現在アップロード中のファイルのアップロード完了後にアップロードされます。

(yukon:上記 2 つのメソッドの違いはおそらく、getFile はファイルキュー内のファイルを取得することです。アップロード済み、エラー、アップロード待ちのキューを含みます。一方、getQueueFile はアップロード待ちキュー内のファイルのみを取得します)

void addPostParam(name, value)【作用:キー/値ペアを追加する】

addPostParam は、各ファイルのアップロード時に POST 方式で一緒に送信されるキー/値のペアを追加します。

これは post_params 設定内の同じキー/値のペアに対応します。post_params 内にその値が既に存在する場合、実際には上書きされます。

void removePostParam(name)【作用:キー/値ペアを削除する】

removePostParam は、各ファイルのアップロード時に POST 方式で一緒に送信されるキー/値のペアを削除します。

これは post_params 設定内の同じキー/値のペアに対応します。post_params 内にその値が既に存在する場合、実際には削除されます。

bool addFileParam(file_idspan>, name, value)

指定された file_id のファイルオブジェクトに POST キー/値のペアを追加します。追加する name プロパティが既に存在する場合、元の値は上書きされます。

すべてのファイルオブジェクトに POST 値を追加する必要がある場合は、設定内の post_params プロパティを使用できます。

bool removeFileParam(file_id, name)

addFileParam によって追加されたPOST値ペアを削除します。

POST 設定にこのプロパティがない場合は、false を返します。

void setUploadURL(url)

設定内の upload_url プロパティを動的に変更します。

void setPostParams(param_object)

post_params を動的に変更し、以前のプロパティはすべて上書きされます。param_object は JavaScript の基本オブジェクトである必要があり、すべてのプロパティと値は文字列型でなければなりません。

void setFileTypes(types, description)

設定内のfile_types と file_types_description を動的に変更する場合、両方のパラメータが必須です。

void setFileSizeLimit(file_size_limit)

設定内の file_size_limit を動的に変更します。この変更は以降のファイルサイズフィルタに有効です。file_size_limit パラメータは単位を受け取り、有効な単位は B、KB、MB、GB です。デフォルトの単位は KB です。

例如: 2147483648 B, 2097152, 2097152KB, 2048 MB, 2 GB

void setFileUploadLimit(file_upload_limit)

設定内の file_upload_limit を動的に変更します。特別な値 0 は無制限を意味します。

提醒:ここで制限されるのは、1つのSWFUploadインスタンスがアップロード成功を制御するファイルの総数です。

void setFileQueueLimit(file_queue_limit)

設定内の file_queue_limit を動的に変更します。特別な値 0 は無制限を意味します。

提醒:ここで制限されるのは、ファイルアップロードキュー(入隊チェックに合格したファイルはアップロード待ちキューに追加されます)に並ぶことを許可されたファイルの総数です。

void setFilePostName(file_post_name)

設定内の file_post_name を動的に変更します。Linux 環境では FlashPlayer がこの設定を無視することに注意してください。

void setUseQueryString(use_query_string)

設定内の use_query_string を動的に変更します。true に設定すると、SWFUpload は GET 形式でデータを送信し、false の場合は POST でデータを送信します。

void setDebugEnabled(debug_enabled)

debug 出力を動的に有効/無効にします。debug_enabled パラメータはブール値です。

void setButtonImageURL(url)

ボタンの画像を動的に変更します。url パラメータは、その swf ファイルからの相対パスまたは絶対アドレスの画像です(例: / で始まる相対パス、または絶対パス: http://www.swfupload.org/buttonImage.png)。FLASH がサポートするすべての画像タイプ(gif、jpg、png)を使用できます。

このボタン画像は、特定のルール(CSSスプライト)に従って処理される必要があります。ボタン画像には、ボタンの4つの状態が含まれている必要があります。上から順にnormal、hover、down/click、disabledです(公式デモの画像を参照してください)。

void setButtonDimensions(width, height)

SWFムービーのサイズを動的に変更して、ボタンの画像サイズに合わせます。値は純粋な数値である必要があり、長さの単位を含めることはできません。高さは画像ボタン全体の高さの1/4でなければなりません。これにより、正しい表示が保証されます。

void setButtonText(text)

Flashボタンに表示するテキストを動的に設定し、HTMLをサポートします。HTMLテキストのスタイルは、CSSセレクターとsetButtonTextStyleメソッドを組み合わせて設定できます。テキストが大きすぎる場合は、はみ出した部分が非表示になります。FlashテキストのHTMLサポートの詳細については、[参照]を参照してください。Adobe's Flash documentation。

void setButtonTextStyle(css_style_text)

setButtonTextメソッドと組み合わせて、CSSスタイルを使用してFlashボタンのテキストスタイルを動的に設定できます。FlashテキストのCSSサポートの詳細については、[参照]を参照してください。Adobe's Flash documentation

void setButtonTextPadding(left, top)

Flashボタンのテキストの左と右のパディングを設定します。値は負の数にすることができます。

void setButtonDisabled(isDisabled)

'true'に設定すると、Flashボタンが無効になり、ボタンに関するすべての動作と操作が無視されます。

void setButtonAction(buttonAction)

マウスがクリックされた後に実行されるアクションを定義します。BUTTON_ACTION定数の列挙には、このメソッドで使用可能な値が格納されています。

void setButtonCursor(buttonCursor)

マウスポインターがボタンを指しているときのスタイルを設定します。CURSOR定数の列挙には、このメソッドで使用可能な値が格納されています。

【新規追加】イベント Events

SWFUploadは操作中に一連のイベントをトリガーします。開発者はこれらのコールバック処理イベントを利用して、UIの制御、操作の制御、エラーの報告を行うことができます。

すべてのイベントはSWFUploadインスタンスのコンテキストで呼び出されるため、これらのコールバックイベント内でthisを使用すると、そのイベントをトリガーしたインスタンスオブジェクトに直接アクセスできます。

すべてのイベントは、インスタンス初期化時にsettingパラメータで事前に設定しておく必要があります。

【新:】

ファイルをアップロードするとき、イベントは次の順序で呼び出されます(アップロードイベントチェーン):

  • 画像サイズ調整機能を追加したアップロード開始 uploadResizeStart
  • 通常のアップロード開始 uploadStart
  • アップロード中 uploadProgress(ファイルのアップロード中に繰り返し呼び出されます)
  • アップロードエラー uploadError(何らかのエラーが発生したときに呼び出され、アップロード中のファイルはキャンセルまたは停止されます)
  • アップロード成功 uploadSuccess(ファイルが正常にアップロードされ、サーバーが有効なデータを受信しました)
  • アップロード完了 uploadComplete(アップロードが完了し、SWFUploadが次のアップロードを開始する準備をします)

flashReady()

このイベント関数は内部イベントであるため、上書きできません。読み込まれたFLASHコントロールがすべての初期化操作を完了すると、このイベントがトリガーされ、SWFUploadが各種コマンドを受け付けられる状態になったことを通知します。

提醒:設定内のカスタムイベント swfupload_loaded_handler に対応

【新增】 swfUploadPreload()

swfUploadPreloadイベントは、SWFUploadが各利用可能な機能を確認した後、Flashムービーのロードが完了する前にトリガーされるイベントです。このイベントの処理関数がfalseを返すと、swfuploadのロードが停止します。通常、ブラウザが重要な機能パラメータをサポートしていない場合の処理に使用されます。

オブジェクトのswfupload_preload_handlerプロパティでこのイベント処理関数を設定できます。

【新】swfUploadLoadFailed()

ページがFlashムービーを正常にロードできない場合。通常、Flash Playerがインストールされていないか、そのバージョンが9.0.28より低いことが原因です。

オブジェクトのswfupload_load_failed_handlerプロパティでこのイベント処理関数を設定できます。

【新】swfUploadLoaded()

swfUploadLoadedイベントは、Flashがロードされ準備が完了したときにトリガーされます。これは設定可能です。swfUploadLoadedイベントは、Flashのロードが完了し、各メソッドを安全に実行できることを通知します。

オブジェクトのswfupload_loaded_handlerプロパティでこのイベント処理関数を設定できます。

【新】mouseClick()

mouseClickイベントは、ボタンがクリックされたとき(同時にbutton_action設定の値がSWFUpload.BUTTON_ACTION.NONEである場合、またはFlashボタンがdisableに設定されている場合)にのみトリガーされます。button_action設定の値がそれ以外の場合、またはFlashボタンが使用可能な場合、このイベントはトリガーされません。

オブジェクトのmouse_click_handlerプロパティでこのイベント処理関数を設定できます。

【新】mouseOver()

mouseOverイベントは、マウスがFlashムービーの任意の部分で移動したときにトリガーされます。

オブジェクトのmouse_over_handlerプロパティでこのイベント処理関数を設定できます。

【新】mouseOut()

mouseOutイベントは、マウスがFlashムービーから離れたときにトリガーされます。

オブジェクトのmouse_out_handlerプロパティでこのイベント処理関数を設定できます。

fileDialogStart()

このイベントは、selectFileまたはselectFilesが呼び出された後、ファイル選択ダイアログが表示される前にトリガーされます。同時に存在できるファイルダイアログは1つだけです。しかし、このイベント処理関数は、ファイル選択ダイアログが閉じられるまで実行されません。

オブジェクトのfile_dialog_start_handlerプロパティでこのイベント処理関数を設定できます。

fileQueued(file object)

ファイルを選択し、ファイル選択ダイアログが閉じて消えたとき、選択したファイルがアップロード待ちキューに正常に追加された場合、正常に追加されたファイルごとにこのイベントが1回トリガーされます(N個のファイルが正常にキューに追加された場合、このイベントはN回トリガーされます)。

設定内のカスタムイベントfile_queued_handlerに対応します。

【新規追加】fileQueueError(file object, error code, message)

 

ファイル選択ダイアログが閉じたとき、選択したファイルのアップロードキューへの追加が失敗した場合、エラーが発生したファイルごとにこのイベントが1回トリガーされます(このイベントとfileQueuedイベントはどちらか一方がトリガーされます。ファイルのキューへの追加には成功と失敗の2つの可能性しかありません)。

ファイルのキューへの追加でエラーが発生する原因としては、次のものが考えられます:1. アップロードサイズ制限を超えている、2. ファイルがゼロバイトである、3. ファイルキューの数量制限を超えている、4. 許可されていない無効なファイルタイプ。

(yukon:テストの結果、messageに含まれる内容は次のとおりです:

1. アップロードサイズ制限を超えました:message=File size exceeds allowed limit.

2. ファイルがゼロバイトです:message=File is zero bytes and cannot be uploaded.

3. ファイルキューの数量制限を超えている:message=int(設定したキューのサイズ制限数を指します)

許可されていない無効なファイルタイプ:message=File is not an allowed file type.

これらのメッセージを変更する場合は、オープンソースパッケージ内のswfupload.asで変更し、swfupload.swfに再コンパイルしてください。

)

具体的なエラー原因はerror codeパラメータで取得できます。error codeのタイプはSWFUpload.QUEUE_ERRORの定義を参照できます。

提醒:設定内のカスタムイベント file_queue_error_handler に対応

注意:選択したキューへの追加ファイル数が設定の数量制限を超えている場合、すべてのファイルはキューに追加されず、このイベントは1回だけトリガーされます。数量制限を超えていない場合は、各ファイルに対してファイルタイプとサイズのチェックが行われ、チェックに合格しないファイルに対してこのイベントがトリガーされ、合格したファイルは正常にキューに追加されます。

fileDialogComplete(number of files selected, number of files queued, total number of files in the queued)

ファイル選択ダイアログが閉じ、選択されたすべてのファイルの処理が完了(アップロードキューへの追加が成功または失敗)したときに、このイベントがトリガーされます。number of files selectedは選択されたファイル数、number of files queuedは今回選択されたファイルのうち正常にキューに追加されたファイル数です。

提醒:設定内のカスタムイベント file_dialog_complete_handler に対応

注意:ファイルを選択後に自動アップロードしたい場合は、このイベントでthis.startUpload()を呼び出すのが良い選択肢です。より厳密な判断が必要な場合は、アップロードを呼び出す前に、キューに追加されたファイルの数を確認し、0より大きければアップロードを開始できます。

【新】uploadResizeStart(file object, width, height, encoding, quality)

uploadResizeStartイベント処理関数は、画像のサイズ調整が開始されるときに呼び出されます。調整中はprogressイベントと処理メソッドは提供されません。ただし、画像の再エンコードにはある程度の時間がかかります。この間にエラーが発生した場合、uploadErrorイベントがトリガーされます。

調整が完了すると、SWFUploadは引き続きuploadStartイベントをトリガーし、通常のアップロードと同じイベントチェーンを開始します。

uploadStart(file object)

ファイルがサーバーへのアップロードを開始する前にuploadStartイベントがトリガーされます。このイベント処理関数では、アップロード前の最終検証や、POSTデータの追加、変更、削除など、必要な他の操作を実行できます。

最後の操作を完了した後、関数がfalseを返すと、このアップロードは開始されません。trueを返すか、何も返さない場合は、アップロードが正式に開始されます。

提醒:設定内のカスタムイベントupload_start_handlerに対応します。

uploadProgress(file object, bytes complete, total bytes)

uploadProgressイベントは、Flashコントロールによって定期的にトリガーされます。3つのパラメータを提供し、それぞれアップロードファイルオブジェクト、アップロード済みのバイト数、総バイト数にアクセスします。したがって、このイベント内でページのUI要素を定期的に更新して、アップロード進捗をリアルタイムに表示する効果を達成できます。

注意:Linuxでは、Flash Playerはファイル全体のアップロードが完了した後にのみこのイベントを1回トリガーします。公式には、これはLinux Flash Playerのバグであり、現在のSWFUploadライブラリでは解決できないとされています。。

提醒:設定内のカスタムイベント upload_progress_handler に対応

uploadError(file object, error code, message)

アップロードが中止されたり、正常に完了しなかった場合は、常にuploadErrorイベントがトリガーされます。error codeパラメータは現在のエラーのタイプを示します。より具体的なエラータイプは、SWFUpload.UPLOAD_ERRORの定義を参照してください。Messageパラメータはエラーの説明を示します。Fileパラメータはアップロードに失敗したファイルオブジェクトを示します。

例えば、サーバー上に存在しないファイル処理ページをリクエストした場合、エラーコードは-200、メッセージは404になります。停止、終了、uploadStartがfalseを返す、HTTPエラー、IOエラー、ファイルアップロード数の制限超過などは、すべてこのイベントをトリガーします。キャンセルされたがまだキューで待機中のファイルについては、Upload errorは発生しません。(公式のこの発言についてはまだ疑問があります。ファイルが退出した後、どうしてまだファイルアップロードキューに残っているのでしょうか?)

提醒:設定内のカスタムイベントupload_error_handlerに対応します。

注意:この時点ではファイルアップロードの周期はまだ終了していないため、ここで次のファイルのアップロードを開始することはできません。

【新增内容】uploadSuccess(file object, server data, received response)

ファイルアップロードの処理が完了したとき(ここでの完了は、ターゲット処理プログラムにFiles情報を送り終えたというだけで、送信のみで、正常に受信されたかどうかは問わない)、かつサーバーが200のHTTPステータスを返したときにトリガーされます。uploadSuccess事件。server dataサーバーが送信した一部のデータ(例えば自分でechoしたものなど)を指します。そしてreceived responseサーバー自身が送信したHTTPステータスコードです。

一部のFlash Playerのバグにより、HTTPステータスコードが取得できず、uploadSuccessイベントがトリガーされないことがあります。このため、2.50版では設定オブジェクトに新しいプロパティassume_success_timeoutが追加され、HTTPステータスコードの受信待ちの最大時間を超えたかどうかを設定し、超えた場合はuploadSuccessをトリガーします。この場合、(received response)パラメータは無効になります。

設定オブジェクトの http_success は、HTTPステータスコードが200以外の値でも uploadSuccess イベントをトリガーすることを許可します。この場合、Flash Player からサーバーデータは利用できません。

に

提醒:設定内のカスタムイベント upload_success_handler に対応

注意:
  1. server dataはサーバー側の処理プログラムが返すデータです。
  2. この時点ではファイルアップロードのサイクルはまだ終了していないため、ここで次のファイルのアップロードを開始することはできません。
  3. Windowsプラットフォームでは、サーバー側の処理プログラムはファイルの保存処理が完了した後、空でない値を返す必要があります。そうしないと、このイベントはトリガーされず、後続のuploadCompleteイベントも実行されません。

uploadComplete(file object)

アップロードキュー内のファイルが1つのアップロードサイクルを完了すると、成功(uploadSuccessがトリガー)か失敗(uploadErrorがトリガー)かに関係なく、uploadCompleteイベントがトリガーされます。これは1つのファイルのアップロードが完了したことを示し、次のファイルのアップロードを開始できます。

次のファイルを自動アップロードする場合、この時点でthis.startUpload()を呼び出して次のファイルのアップロードを開始するのは良い選択です。ただし、使用には注意が必要です。注意事項を参照してください。

提醒:設定内のカスタムイベント upload_complete_handler に対応

注意:複数ファイルをアップロードしているときに、途中でcancelUploadを使用してアップロード中のファイルをキャンセルしたり、stopUploadを使用してアップロード中のファイルを停止したりした場合、uploadComplete内でthis.startUpload()を慎重に使用する必要があります。上記の状況では、uploadErrorとuploadCompleteが順番に実行されるため、現在のファイルのアップロードは停止されますが、直後に次のファイルのアップロードが開始されます。奇妙に感じるかもしれませんが、実際にはプログラムに間違いはありません。キューの自動アップロード全体を終了したい場合は、追加のプログラム処理が必要です。

debug(message)

debug設定がtrueに設定されている場合、ページの下部にtextAreaが自動的に追加されます。このdebugイベントが書き換えられていない場合、SWFUploadライブラリとFlashは両方ともこのイベントを呼び出して、ページ下部の出力ボックスにデバッグ情報を追加し、デバッグに使用します。

提醒:設定内のカスタムイベントdebug_handlerに対応します。

機能オブジェクト SWFUpload Utility Objects

設定オブジェクト Settings object

これはJSのObject型の変数で、SWFUploadインスタンスの初期化に設定を提供します。その中の各設定プロパティは1回だけしか出現できません。多くのプロパティはオプションです。オプションのプロパティが設定されていない場合は、SWFUploadライブラリでデフォルト指定されている適切な値が使用されます。詳細はsettingの詳細な説明を参照してください。

例如:(settingで設定できるすべてのプロパティ)

Example:

{ upload_url : "http://www.swfupload.org/upload.php", flash_url : "http://www.swfupload.org/swfupload.swf", flash9_url : "http://www.swfupload.org/swfupload_fp9.swf", file_post_name : "Filedata", post_params : { "post_param_name_1" : "post_param_value_1", "post_param_name_2" : "post_param_value_2", "post_param_name_n" : "post_param_value_n" }, use_query_string : false, requeue_on_error : false, http_success : [201, 202], assume_success_timeout : 0, file_types : "*.jpg;*.gif", file_types_description: "Web Image Files", file_size_limit : "1024", file_upload_limit : 10, file_queue_limit : 2, debug : false, prevent_swf_caching : false, preserve_relative_urls : false, button_placeholder_id : "element_id", button_image_url : "http://www.swfupload.org/button_sprite.png", button_width : 61, button_height : 22, button_text : "<b>Click</b> <span class="redText">here</span>", button_text_style : ".redText { color: #FF0000; }", button_text_left_padding : 3, button_text_top_padding : 2, button_action : SWFUpload.BUTTON_ACTION.SELECT_FILES, button_disabled : false, button_cursor : SWFUpload.CURSOR.HAND, button_window_mode : SWFUpload.WINDOW_MODE.TRANSPARENT, swfupload_loaded_handler : swfupload_loaded_function, mouse_click_handler : mouse_click_function, mouse_over_handler : mouse_over_function, mouse_out_handler : mouse_out_function, file_dialog_start_handler : file_dialog_start_function, file_queued_handler : file_queued_function, file_queue_error_handler : file_queue_error_function, file_dialog_complete_handler : file_dialog_complete_function, upload_start_handler : upload_start_function, upload_progress_handler : upload_progress_function, upload_error_handler : upload_error_function, upload_success_handler : upload_success_function, upload_complete_handler : upload_complete_function, debug_handler : debug_function, custom_settings : { custom_setting_1 : "custom_setting_value_1", custom_setting_2 : "custom_setting_value_2", custom_setting_n : "custom_setting_value_n", } }

設定パラメータの詳細説明 Settings Description

【新】upload_url

默认值:空字符串

upload_url設定は、絶対URLまたはSWFファイルからの相対的な完全URLを受け取ります。ブラウザとFlashPlayerが基準パスの設定を変更することによるリクエストパスのエラーを避けるために、完全な絶対パスを使用することを推奨します。(yukon:これは実は相対的なものです。swfuploadとPHPアップロードファイル処理ページが常に同じWebサイトフォルダ内にある場合は、相対パスを使用することをお勧めします)

設定オブジェクトのプロパティpreserve_relative_urlsがfalseの場合、SWFUploadは相対パスを絶対パスに変換し、URLが異なるシステムのFlash Playerでさまざまな形式に解析されることを防ぎます。SWFUploadのこの変換を無効にする場合は、相対パスを使用してswfupload.swfの場所を設定する必要があります。

注意:ここではFlashPlayerのセキュリティドメインモデルを考慮する必要があります。

file_post_name

默认值:Filedata

file_post_name パラメータを使用すると、POST情報内のアップロードファイルの name 値を設定できます(従来のフォームで <input type="file" name="Filedata"/> の name 属性を設定するのと似ています)。

注意:(2.5版待定)Linuxではこのパラメータの設定は無効で、受信されるnameは常にFiledataになります。そのため、最大限の互換性を確保するには、このパラメータはデフォルト値を使用することをお勧めします。

【新】post_params

默认值:空のObjectオブジェクト

post_paramsは、各ファイルのアップロード時にサーバーに付随してPOSTすることを許可するキー/値ペアを定義します。このプロパティにはJavaScriptの配列オブジェクトを割り当てることができます。キー/値ペアは純粋な文字列または数値である必要があります。(JavaScriptのtypeof()関数で検出できます。)

注意: Flash Player 8 はpostデータの添付送信をサポートしていません。SWFUpload は自動的に post_params をクエリ文字列の形式で送信します。

use_query_string

默认值:false

このプロパティの選択値はtrueとfalseで、post_paramsをGETメソッドで送信するかどうかを設定します。falseの場合、POST形式で送信されます。v2.1.0で導入されました。

【新】preserve_relative_urls

默认值:false

preserve_relative_urlsの選択値はboolean変数です。SWFUploadが相対URLを絶対URLに変換するかどうかを示します。trueに設定すると変換されません。デフォルトはfalse、つまり自動変換です。

requeue_on_error

默认值:false

このプロパティの選択値はtrueとfalseです。trueに設定すると、ファイルオブジェクトでuploadErrorが発生した場合(fileQueueエラーとFILE_CANCELLEDエラーを除く)、そのファイルオブジェクトは破棄されずにファイルアップロードキューの先頭に再挿入されます。必要に応じて、再入隊されたファイルを再度アップロードできます。アップロードキューからそのファイルオブジェクトを削除するには、cancelUploadメソッドを使用する必要があります。

アップロード失敗に関連するすべてのイベントも同様に1つずつトリガーされます。そのため、アップロードに失敗したファイルを再入隊させると、Queue Plugin(またはファイルキュー全体を自動アップロードするカスタムコード)と競合する可能性があります。コード内でstartUploadメソッドを呼び出して次のファイルのアップロードを自動的に行い、同時にアップロードに失敗したファイルをアップロードキューから退出させる措置を講じていない場合、この再入隊されたアップロード失敗ファイルが再びアップロードを開始し、また失敗し、再入隊、再アップロード...という無限ループに入ります。

この設定はv2.1.0で導入されました。

http_success

默认值:[]

この配列は、successイベントをトリガーするHTTPステータス値をカスタマイズできます。200のステータス値は常にsuccessをトリガーし、200のステータスのみがserverDataを提供します。

200以外のHTTPステータス値を受け入れる場合、サーバー側は内容を返す必要はありません。

【新】assume_success_timeout

默认值:0

assume_success_timeoutは、SWFUploadがサーバー応答を検出するために待機する秒数を設定し、タイムアウト時にアップロード成功(uploadSuccess)イベントを強制的にトリガーします。このプロパティはFlash Playerのバグの下でも正常に動作するためのものです。サーバー応答の長時間待機を回避し、macOSでFlash Playerがサーバーから返されたコンテンツを取得できないバグも解決します。

Flashは、最後のuploadProgressイベントがトリガーされてから30秒後にサーバーの応答を無視し、アップロード成功イベントを強制的にトリガーします。

assume_success_timeoutが0に設定されている場合、この機能は無効になります。SWFUploadは、Flash PlayerがuploadSuccessイベントをトリガーするまで長時間待機します。

file_types

默认值:*.*

ファイル選択ダイアログのファイルタイプフィルタールールを設定します。このプロパティはセミコロン区切りのファイルタイプ拡張子を受け取ります。例えば「*.jpg;*.gif」の場合、ユーザーはファイル選択ダイアログでjpgとgifタイプのファイルのみ表示・選択できます。デフォルトではすべてのタイプのファイルを受け入れます。

提醒:この設定はクライアント側のブラウザに対するフィルターのみであり、サーバー側のファイル処理におけるファイルタイプのフィルターには何の制限もありません。厳密なファイルフィルターが必要な場合は、サーバー側でもプログラムによる検出が必要です。

file_types_description

默认值:All Files

ファイル選択ダイアログでユーザーに表示するファイルの説明を設定します。

file_size_limit

默认值:0

ファイル選択ダイアログのファイルサイズフィルタールールを設定します。このプロパティは単位付きの数値を受け取ることができ、使用可能な単位はB、KB、MB、GBです。単位が省略された場合は、デフォルトでKBが使用されます。特別な値0はファイルサイズの制限がないことを示します。

提醒:この設定はクライアント側のブラウザにのみ有効で、サーバー側のファイル処理には何の制限もありません。厳密なファイルフィルターが必要な場合は、サーバー側でもプログラムによる処理が必要です。

file_upload_limit

默认值:0

SWFUploadインスタンスがアップロードを許可する最大ファイル数を設定します。これは設定オブジェクトのfile_queue_limitプロパティの上限でもあります。ユーザーがアップロードに成功したか、キューに追加されたファイルが最大数に達すると、それ以上ファイルを追加できません。特別な値0はアップロード数の無制限を意味します。アップロードに成功した(アップロードがuploadSuccessイベントをトリガーした)ファイルのみがアップロード数制限でカウントされます。setStatsメソッドを使用すると、アップロード成功ファイル数を変更できます。

注意:この値はページをまたいで使用できません。ページがリフレッシュされるとこの値もリセットされます。厳密なファイルアップロード数の制限はサーバー側で検出・管理する必要があります。

file_queue_limit

默认值:0

ファイルアップロードキュー内の待機ファイルの最大数制限を設定します。ファイルが正常にアップロードされた、エラーが発生した、またはアップロードを退出した場合、ファイルキューのファイル数が上限に達していなければ、新しいファイルをキューに追加して、そのファイルのアップロードキュー内の位置を引き継ぐことができます。許可されたアップロードファイル上限(file_upload_limit)または残りの許可アップロードファイル数がファイルキューの上限(file_queue_limit)より小さい場合、この値はその小さい方の値が採用されます。

flash_url

默认值:空字符串

このアップロードページからの絶対または相対的な完全URLを設定します。SWFUploadがインスタンス化された後、この設定は変更できません。

提醒:テストにより、setUploadURLメソッドを使用するとこの設定を変更できることがわかりました。

【新】flash9_url

(v2.5.0新增)Flash Player 9対応のFlashコントロール(swf) 絶対または相対URL

flash_width

(v2.1.0で削除) Defines the width of the HTML element that contains the flash. Some browsers do not function correctly if this setting is less than 1 px. This setting is optional and has a default value of 1px.

flash_height

(v2.1.0で削除) Defines the height of the HTML element that contains the flash. Some browsers do not function correctly if this setting is less than 1 px. This setting is optional and has a default value of 1px.

flash_color

(v2.2.0で削除) This setting sets the background color of the HTML element that contains the flash. The default value is '#FFFFFF'.

Note: This setting may not be effective in "skinning" 1px flash element in all browsers.

prevent_swf_caching

默认值:true

(v2.2.0新增)このブール値は、Flash URLの後にランダムな値を追加するかどうかを設定し、ブラウザがそのSWFムービーをキャッシュするのを防ぎます。これは、一部のIEエンジンベースのブラウザで発生するバグを解決するためのものです。

提醒:SWFUploadはflash_urlの後ろに直接swfuploadrndというランダムパラメータを追加します。指定したflash_urlにすでにGETタイプのパラメータが存在する場合、疑問符が2つ連結されてエラーが発生します。

debug

默认值:false

この値はブール型で、debugイベントがトリガーされるかどうかを設定します。

注意:SWFUploadコードでは、この変数を文字列「true」と恒等(===)比較しているため、DEBUGモードが有効と見なされるのは「true」のみです。もし1を設定した場合、JS側は有効と判断し、初期化完了後にDebug Consoleが生成されますが、その後の操作ではFLASHはデバッグ情報を出力しません。(私は1と0でブール変数を表す習慣があったため、なぜFlashのデバッグ情報が出力されないのか一時期困惑していました。)

button_placeholder_id

默认值:null

(v2.2.0新增)この必須パラメータは、swfupload.swfが置き換えるページ内のDOM要素のID値を指定します。対応するDOM要素がSWF要素に置き換えられると、SWFコンテナにはCSSでカスタマイズするための「swfupload」という名前のスタイルセレクタが追加されます。

button_image_url

默认值:空字符串

(v2.2.0新增)V2.2.0版の最大の変更点は、SWFにボタンが導入されたことです。このパラメータを使用して、swfファイルからの相対アドレスまたは絶対アドレスの画像(またはSWF)をボタンのUI表示として設定できます。Flashがサポートするすべての画像タイプ(gif、jpg、png、またはSWF)を使用できます。

このボタン画像は、一定のルール(CSSスプライト)に従って処理する必要があります。ボタン画像には、上から順にnormal、hover、down/click、disabledの4つの状態を含める必要があります(公式デモの画像を参照してください)。

button_width

默认值:1

(v2.2.0新增)このSWFの幅属性を設定します。

button_height

默认值:1

(v2.2.0新增)このSWFの高さ属性を設定します(ボタン画像の高さの1/4)。

button_text

默认值:空字符串

(v2.2.0新增)この属性は、Flashボタンに表示するテキストを設定し、HTMLをサポートします。HTMLテキストのスタイルは、CSSセレクタとbutton_text_styleパラメータを組み合わせて設定できます。FlashテキストのHTMLサポートの詳細については、...を参照してください。Adobe's Flash documentation。

button_text_style

默认值:"color: #000000; font-size: 16pt;"

(v2.2.0新增)このパラメータはbutton_textパラメータと組み合わせて、CSSスタイルを使用してFlashボタン内のテキストスタイルを設定します。FlashテキストのCSSサポートの詳細については、...を参照してください。Adobe's Flash documentation

button_text_top_padding

默认值:0

(v2.2.0新增)Flash Button上のテキストの上端からの距離を設定します。負の値を使用できます。

button_text_left_padding

默认值:0

(v2.2.0新增)Flashボタン上のテキストの左端からの距離を設定します。負の値も使用できます。

button_action

默认值:SWFUpload.BUTTON_ACTION.SELECT_FILES(多文件上传)

(v2.2.0新增)Flashボタンがクリックされた後の動作を設定します。デフォルトはSWFUpload.BUTTON_ACTION.SELECT_FILESで、ボタンをクリックすると複数ファイルアップロードのダイアログが開きます。SWFUpload.BUTTON_ACTION.SELECT_FILEに設定した場合は、単一ファイルのアップロードになります。SWFUpload.BUTTON_ACTION.START_UPLOADに設定した場合は、ファイルのアップロードを開始します。

button_disabled

默认值:false

(v2.2.0新增)このブール値は、Flashボタンが無効状態かどうかを設定します。無効状態のときは、クリックしても何も実行されません。

button_cursor

默认值:SWFUpload.CURSOR.ARROW(箭头光标)

(v2.2.0新增)このパラメータは、マウスがFlashボタン上にホバーしたときのカーソル状態を設定できます。デフォルトはSWFUpload.CURSOR.ARROWで、SWFUpload.CURSOR.HANDに設定した場合は手形になります。

button_window_mode

默认值:SWFUpload.WINDOW_MODE.WINDOW

(v2.2.0新增)このパラメータは、ブラウザがこのSWFムービーをどのモードで表示するかを設定します。

custom_settings

默认值:空のObjectオブジェクト

このプロパティはObject型のデータを受け取り、SWFUploadインスタンスに関連するカスタム情報(プロパティやメソッドなど)を安全に格納するために使用できます。SWFUpload内部のメソッドやプロパティとの競合や、バージョンアップグレードの互換性を心配する必要はありません。

設定が完了すると、インスタンスのcustomSettingsプロパティを介してアクセスできます。

var swfu = new SWFUpload({ custom_settings : { "My Setting" : "This is my setting", myothersetting : "This is my other setting", integer_setting : 100, a_dom_setting : document.getElementById("some_element_id") } }); var my_setting = swfu.customSettings["My Setting"]); swfu.customSettings["My Setting"] = "This is my new setting"; swfu.customSetting.myothersetting = "another new value"; swfu.customSetting.integer_setting += 25; swfu.customSetting["a_dom_setting"].style.visibility = "hidden";
Event Handlers

默认值:null

残りの設定は、一連のイベント処理コールバック関数を定義します。SWFUploadの操作中に対応するイベントこれらがトリガーされます。これらのコールバックでカスタム操作を行う必要がある場合は、設定内で対応するJavaScript関数を定義してください。

【新】Support Object

SWFUploadインスタンスのsupportプロパティ(その型はオブジェクト)は、SWFUploadの特定の機能が、ブラウザが使用している特定のバージョンのFlash Playerでサポートされているかどうかを確認できます。

{ load : bool, // 标示SWFupload是否能在当前版本的 Flash Player中载入 imageResize : bool, // 标示当前时候安装了Flash Player 10或更新版本的Flash Player,并且SWFUpload 是否支持客户端调节上传图片的大小。 }

File Object

Fileオブジェクトには、利用可能な一連のファイルプロパティが含まれています。多くの処理イベントはFile Objectパラメータを渡して、そのファイルの関連プロパティにアクセスします。

{ id : string, // SWFUpload控制的文件的id,通过指定该id可启动此文件的上传、退出上传等 index : number, // 文件在选定文件队列(包括出错、退出、排队的文件)中的索引,getFile可使用此索引 name : string, // 文件名,不包括文件的路径。 size : number, // 文件字节数 type : string, // 客户端操作系统设置的文件类型 creationdate : Date, // 文件的创建时间 modificationdate : Date, // 文件的最后修改时间 filestatus : number // 文件的当前状态,对应的状态代码可查看SWFUpload.FILE_STATUS }

Stats Object

このオブジェクトはアップロードキューの状態情報を提供します。インスタンスのgetStatsメソッドにアクセスすると、このオブジェクトを取得できます。

このオブジェクトには以下のプロパティが含まれます:

{ in_progress : number // 值为1或0,1表示当前有文件正在上传,0表示当前没有文件正在上传 files_queued : number // 当前上传队列中存在的文件数量 successful_uploads : number // 已经上传成功(uploadSuccess触发)的文件数量 upload_errors : number // 已经上传失败的文件数量 (不包括退出上传的文件) upload_cancelled : number // 退出上传的文件数量 queue_errors : number // 入队失败(fileQueueError触发)的文件数量

これらすべてのプロパティの値は、setStatsメソッドを使用して変更できます。ただし、...を除きます。in_progressとfiles_queued。

插件 SWFUpload Plug-ins

SWFUpload v2.0以降、いくつかのプラグインが導入されました。これらはSWFUploadがいくつかの機能を実装するのに役立ちます。

ほとんどのプラグインの使用ドキュメントは、jsプラグイン(plugin)フォルダにあります。

SWFObject

SWFObjectプラグインの使用SWFObject librarySWFUpload Flashコンポーネント(Component)をページに挿入するために

このプラグインは、ドキュメント構造の読み込み完了検出機能(Document Ready loading)とFlashバージョン検出機能も提供します。(yukon:この機能はjQueryの$(document).ready()に似ているかもしれません)。詳細な使用方法は、このプラグインフォルダ内にドキュメントとして記録されています。SWFObjectのDocument Ready loading検出機能を他のライブラリの類似機能と混ぜて使用することは避けたほうがよいでしょう。そのうちの1つだけを使用してください。

Flash Player 10: Flash Player 10では、ボタンを使用してムービーの関連操作をトリガーする必要があるため、このボタン(設定オブジェクトのbutton_placeholder_idプロパティでそのidを識別できます)がCSSなどでhiddenまたはdisplay:noneに設定されている場合、SWFUploadは読み込みに失敗します。

Cookies

Flash Cookieのバグを解決するために、CookiesプラグインはブラウザのCookieを自動的に取得し、アップロードとともに送信します。CookieはPOSTまたはGET形式でアップロードURLとともに送信されます。

このプラグインは、Cookieのキー/値ペアをPOSTまたはGETで送信します。サーバー側では、これらはCookieとして解析されません。Cookieを自動検出してセッションや認証を確認する一部のフレームワークでは、このプラグインが渡す値を取得できない可能性があります。

Queue Handling

Queue Handlingプラグインは、キューハンドリング機能を提供します。たとえば、キュー全体のアップロード、キュー全体のキャンセル、エンキュー後の自動アップロード開始などです。

Speed

speedプラグインは、'file'オブジェクトのいくつかのプロパティを拡張して、現在のアップロード状況を記述します。このプラグインには、現在の速度(current speed)、平均速度(average speed)、経過時間(elapsed time)、予想残り時間(remaining time)などの値が含まれます。

既知の問題 Known Issues

Flash Playerおよび多くのブラウザのバグがSWFUploadを悩ませています。しかし、私たちは常に努力を続けています。

Linuxでのキャンセル Cancelling in Linux

Flash 9 Player以前のバージョンでは、Linuxオペレーティングシステム上でアップロードキャンセルを実行すると、ブラウザがクラッシュする可能性があります。ただし、新しいバージョンのFlash Playerではこの問題が改善されています。

Linux 上のアップロード進捗 Upload Progress in Linux

Linux上のFlash Playerは、Windowsのようにアップロード中に継続的にイベントを発行するのではなく、アップロード完了後に一度だけアップロード進捗イベント(uploadProgress)を発行します。

これは、一部のLinuxディストリビューションがアップロード中にブラウザ全体をロックするためです。

MAC上のアップロード進捗 Upload Progress in OS X

MAC OS上のFlash PlayerでuploadProgressイベントが発生しないという報告をいくつか受けています。詳細な状況はまだ調査中ですが、潜在的な問題に注意してください。

MIME Type

ファイルの実際のMIME形式が何であれ、Flash PlayerはMIME形式で...application/octet-streamすべてのファイルをアップロード

文件最大可选择数 Maximum number of selected files

Flash Player自体は選択可能なアップロードファイル数の最大値に制限を設けていませんが、総ファイル名の最大長に制限があります。この文字列は、「ファイル名」スペース「ファイル名」...という構成です。アップロードできるファイル数は、オペレーティングシステムのファイル名総長の制限によって決まります。ユーザーがファイルを選択しすぎると、Flash Playerの警告メッセージが表示され、ファイル選択ダイアログに表示されます(yukon:私はXPで一度に173個のファイルをアップロードしましたが、それでも警告はありませんでした...)。

代理 Proxies

Flash Playerはプロキシを正常に使用できない場合があります。プロキシ認証の処理にいくつか問題があり、何らかの競合が発生する可能性があります。

一部のアンチウイルスソフトウェアは、ローカルクライアントプロキシを使用してアップロードファイルを受信し、スキャンします(アップロードファイルをインターセプトしてプロキシサーバーに書き込み、スキャン完了後に実際にターゲットサーバーへ送信するようです)。これにより、SWFUploadはファイル全体がアップロードされたと誤って判断し、100%完了まで大量のuploadProgressイベントを発行します。プロキシが実際にターゲットサーバーへアップロードしている間、SWFUploadは一時停止しているように見えます。

カスペルスキーアンチウイルスソフトウェア:カスペルスキー(他の一部のアンチウイルスソフトウェアも)ローカルからのアップロードデータをインターセプトするためにクライアント側プロキシを実装しています。SWFUploadはこのプロキシシステムの存在を検出できません。これらのプロキシサーバーはアップロードファイルを非常に高速に受信し、スキャンしてからターゲットファイルに送信します。

apache安全模块 Apache mod_security

Apacheのセキュリティモジュールmod_securityは、サーバーが受信したPOSTメッセージを検証します。Flash Playerはエッジケースな方法を実装しており(検証するかどうかを決定するパラメータがあります)、POSTによるファイルアップロードもサーバー側で実装されています。

セキュアソケットレイヤー SSL

Flash PlayerがSSLではアップロードできないという報告をいくつか受けています。この問題の具体的な状況はまだ確認されていませんが、SSL下でのアップロードは確かに信頼性が低いようです。特に公開鍵と自己署名証明書(self-signed certificates)を使用する場合に問題が発生します。

同様に、信頼されていない認証機関(CA)が発行したSSL証明書はFlashでは受け入れられません。Flashにはこのような証明書を受け取る方法が用意されていないためです。前述のCookieバグと同様に、Windows版のFlash Playerは、ブラウザが現在使用中の証明書に関係なく、信頼リストにあるCAが発行した証明書のみを受け入れます。

授权 Authentication

HTTPの認証メカニズムはFlash Playerで十分にサポートされていません。最新バージョンのFlash Playerでは改善されていますが、旧バージョンではブラウザがクラッシュする可能性があります。

过早终止连接 Prematurely terminated connections

レスポンスを早期に終了させる(例:ASP.NETのResponse.end()メソッド)と、アップロードが本来完了しているにもかかわらず、SWFUploadがアップロード失敗を報告することがあります。

ファイルのPOST名 Filedata POST name in Linux

ファイル受信名の変更(デフォルトは"Filedata"、設定オブジェクトのfile_post_nameプロパティ)は、LinuxのFlash Playerでは機能しません。

Cookie bug

Windows環境の非IEブラウザ(FireFox, Opera, Safari, など)では、FlashプラグインがIEのcookieを送信します。これにより、多くのサーバーのセッションおよび認証メカニズムが壊れます。

開発者は、Sessionおよび認証Cookie情報を渡す問題を自分で手動で解決し、サーバー上のセッションも自分で手動で修正する必要があります。セッションを使用したい場合です。

ただし、SWFUploadパッケージには、このバグを解決するPHPまたはASP.Netのサンプルコードが提供されています。

ExternalInterfaceクラスのバグ( ExternalInterface bugs)

ブラウザ/JSとやり取りするとき、Flash Playerはescapeメソッドを使用してデータを正しくエンコードできません。SWFUploadはこの問題を解決するために多大な努力を払ってきました。将来このバグが修正されれば、SWFUploadは追加のエスケープエンコードデータを送信する予定です。

超长服务器数据bug (Server Data length bugs)

サーバーレスポンスデータが長すぎると、MACまたはLinuxシステムのFlash Playerではエラーが発生する可能性があります。データが切り詰められたり、変更されたり、一部が重複したりすることがあります。サーバーから返すデータはできるだけ短く簡潔にすることをお勧めします。

Avant Browser

一度キャッシュされると、SWFUploadはAvantブラウザで正しく動作しません。

SWFUpload v2.2.0以降、この問題を解決するために prevent_swf_caching 設定が追加されました。

ファイル選択ダイアログとページ変更 File Dialog & Page Changing

ファイル選択ダイアログが表示されている時にページを離れたり、リフレッシュするとブラウザがクラッシュすることがあります。(すべてのブラウザ、すべてのオペレーティングシステムで)

この状況は、主に<a>ハイパーリンクの「onclick」でselectFile/selectFilesを呼び出すように設定したが、デフォルトの遷移動作を禁止しなかった場合に発生します。そのハイパーリンクをクリックすると、他のページへ遷移すると同時にファイル選択ダイアログが開きます。

(yukon:もう一つの可能性として、プログラムがページの強制リフレッシュやリダイレクトを行う場合があります。例えば、HTMLの<meta>タグ内のrefresh、ASP.NETのResponse.Redirect()、PHPのheader()などです。)

サーバースクリプトの実行時間が長すぎる Long Running Upload Scripts

FlashがWebサーバーにファイルをアップロードすると、アップロード受信プログラムが実行されます。受信プログラムは、それらを保存するかどうか、サムネイルの作成、ウィルススキャンなどを決定します。受信プログラムが30秒以内にデータを返さない場合、Flashはリンクを切断し、IOエラーを返します。

これを望まない場合、処理の途中でサーバーに数文字またはデータを返させてください(可能であれば)。

例えばPHPでは、PHPスクリプトはFlashが切断した後も操作を正常に完了できますが、切断後はFlashは戻りデータを受け取れません。

窗口模式 WMODE / BUTTON_WINDOW_MODE

一部のブラウザでは、Flashコントロールがスクリーンの表示領域にない場合、設定されたWMODE(BUTTON_WINDOW_MODEによって設定)がFlashコントロールの読み込みを妨げます。スクロールバーをドラッグしてFlashコントロールがスクリーンの表示領域に入って初めて、読み込みと表示が行われます。

(yukon:これはページをできるだけ早く表示するためです。例えば、画像がたくさん入ったフォルダを開いて、表示方法をサムネイルに設定し、一気に下へスクロールすると、下の画像ファイルの内容が徐々に表示されていくのが見えます)

この特性はSWFObjectプラグインに悪影響を与える可能性があります。SWFUploadイベントが発火しない可能性があり、ボタンの背景画像はコントロールが表示されるまで読み込まれない可能性があります。

一部のオペレーティングシステム(Linux)では、WMODEが透明(transparent)に設定されている場合、Flashが開くファイル選択ダイアログがブラウザウィンドウの後ろに表示されます。

メモリリーク Memory Leaks

一部のブラウザ(特にIE)は、Flash PlayerがExternalInterfaceクラスを使用してJSとやり取りした後、メモリを回収できません(例:SWFUpload)。SWFUploadインスタンスを過剰に生成し、ページを数回リフレッシュすると、ブラウザのメモリ使用量が過多になり、ブラウザのクラッシュやその他のシステムエラーを引き起こす可能性があります。

SWFUpload v2.2.0では、メモリリークを防ぐためのいくつかのメカニズムを実装しました。ただし、ページを閉じるときにdestroy()メソッドを呼び出すことをお勧めします。1つのページで数百のSWFUploadインスタンスを使用する場合は、メモリリークを防ぐために注意深くテストする必要があります。

Macオペレーティングシステムに関するいくつかの問題 Other Mac Issues

  • サーバーが返すデータやMacシステム上のFlash Playerでは、uploadSuccessイベントがトリガーされない場合があります。この問題を解決するために、assume_success_timeout設定を追加しました。ただし通常は、受信成功後に短いフィールドを返すことが非常に簡単で信頼性があります。
  • 一部のユーザーは、Macシステムでサブドメインを含むアドレスへのアップロードに問題があると報告しています
  • 一部のユーザーは、リダイレクト(HTTPステータスコード302)がMac Flash Playerでうまく処理されないと報告しています。Windowsではこの問題はないようです。302リダイレクトは、いくつかの認証モデルやMVC設計フレームワークでよく使用されます。
  • Flashの開発ドキュメントによると、OS X 10.3より前のバージョンのシステムでは、bytes loadedが常に-1になります。SWFUploadはそれを0に変更しましたが、total bytesは送信されないため、進捗は永遠に100%に達しません。そのため、アップロード完了時にuploadSuccessまたはuploadCompleteイベントを発行し、UIを更新して100%を表示するよう設定してください。これにより、UIを各システムで統一します。
  • 一部のユーザーは、Mac Flash Playerでアップロードパスにスペース文字が含まれると問題が発生すると報告しています。それらを+または%20に置き換えてください
  • 一部のユーザーは、Mac Flash PlayerがHTTP HOSTヘッダーにポート番号を追加することを報告しています(例:http://www.example.com:80)。このパラメータをチェックする場合、この問題には注意が必要です。
  • リソースフォーク(resource fork)のみを含むファイルは、Flash Playerによって0バイトファイルとして扱われ、アップロードできません(注:Flash Player 10.1でこの問題が解決された可能性があります)