Eine Anleitung zur Verwendung von SWFUpload finden Sie unter:https://www.example.com/w3cnote/swfupload-guide.html

Inhaltsverzeichnis

  1. SWFUpload
  2. SWFUpload Version 2
  3. Übersicht)
  4. Erste Schritte)
  5. SWFUpload JavaScript-Objekt)
    1. Konstruktor
    2. Globale Variablen und Konstanten)
      1. Neu: instances
      2. movieCount
      3. Neu: QUEUE_ERROR
      4. Neu: UPLOAD_ERROR
      5. Neu: FILE_STATUS
      6. Neu: UPLOAD_TYPE
      7. Neu: BUTTON_ACTION
      8. Neu: CURSOR
      9. Neu: BUTTON_WINDOW_MODE
      10. Neu: RESIZE_ENCODING
      11. Neu: onload
    3. Eigenschaften
      1. Neu: customSettings
      2. movieName
    4. Methoden
      1. addSettingVeraltet
      2. getSettingVeraltet
      3. retrieveSettingEntfernt (in v2.1.0)
      4. destroyHinzugefügt in v2.1.0
      5. displayDebugInfo
      6. selectFile
      7. selectFiles
      8. startUpload
      9. Neu: startResizedUpload (hinzugefügt in v2.5.0)
      10. cancelUpload
      11. stopUpload
      12. Neu: requeueUpload
      13. getStats
      14. setStats
      15. getFile
      16. Neu: getQueueFile (hinzugefügt 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 (hinzugefügt in v2.2.0)
      31. setButtonDimensions (hinzugefügt in v2.2.0)
      32. setButtonText (hinzugefügt in v2.2.0)
      33. setButtonTextStyle (hinzugefügt in v2.2.0)
      34. setButtonTextPadding (hinzugefügt in v2.2.0)
      35. setButtonDisabled (hinzugefügt in v2.2.0)
      36. setButtonAction (hinzugefügt in v2.2.0)
      37. setButtonCursor (hinzugefügt in v2.2.0)
    5. Neu: Ereignisse
      1. flashReady
      2. Neu: swfUploadPreload
      3. Neu: swfUploadLoadFailed
      4. Neu: swfUploadLoaded
      5. Neu:buttonAction
      6. fileDialogStart
      7. fileQueued
      8. Neu: fileQueueError
      9. fileDialogComplete
      10. Neu:uploadResizeStart
      11. uploadStart
      12. uploadProgress
      13. uploadError
      14. Neu:uploadSuccess
      15. uploadComplete
      16. debug
    6. SWFUpload-Hilfsobjekte
      1. Einstellungsobjekt
      2. Einstellungsbeschreibung
      3. Neu: Unterstützungsobjekt
      4. Dateiobjekt
      5. Statistikobjekt
  6. SWFUpload-Plug-ins
  7. Neu: Bekannte Probleme

SWFUpload

SWFUploadUrsprünglichVinterwebb.seEin clientseitiges Datei-Upload-Tool entwickelt. Es kombiniert JavaScript und Flash, um eine Fähigkeit (und ein gutes Benutzererlebnis) im Browser bereitzustellen, die dem traditionellen Upload-Tag <input type="file" /> überlegen ist.

Die Hauptmerkmale von SWFUpload:

  • Im Dateiauswahldialog können mehrere Dateien ausgewählt werden.
  • AJAX-artige Uploads ohne Seitenaktualisierung.
  • Verschiedene Ereignisse während des Uploadvorgangs.
  • Bilder können auf der Client-Seite skaliert werden.
  • Der verwendete Klassen-Namespace ist mit verschiedenen JS-Bibliotheken kompatibel (d. h. jQuery, Prototype usw.).
  • Unterstützt Flash 9 und Flash 10 (die Unterstützung für Flash 8 wurde nach Version 2.2.0 eingestellt).

Die Designphilosophie von SWFUpload unterscheidet sich von anderen Flash-basierten Upload-Tools. SWFUpload gibt Entwicklern so viel UI-Kontrolle wie möglich. Entwickler können XHTML, CSS und JavaScript verwenden, um es besser an den Stil ihrer Website anzupassen. Es bietet eine Reihe einfacher JS-Ereignisse zum Aktualisieren des Upload-Status, und Entwickler können diese Ereignisse verwenden, um den Datei-Upload-Fortschritt auf der Webseite anzuzeigen.

Leider zwingt uns Flash Player 10, eine Schaltfläche zu verwenden (nach dem Klicken), um den Dateiauswahldialog auszulösen, aber SWFUpload ermöglicht Entwicklern, mit JS den Text und das Aussehen der Schaltfläche zu ändern.

SWFUpload v2

SWFUpload v2 enthält viele neue Funktionen, verbesserte Stabilität, behebt einige Fehler in Flash Player und bietet einige nützliche Plug-ins. Zu den neuen Funktionen gehören:

  • Kann die Sicherheitsfunktionen von Flash Player 10 nutzen.
  • Kann zusätzliche Daten per POST mit Uploads senden.
  • Sendet POST-Daten für jeden Datei-Upload.
  • Vollständiger Satz an Ereignissen.
  • Alle Einstellungen und Parameter können flexibel konfiguriert werden.
  • Kann vom Server zurückgegebene Daten abrufen.
  • Kann Dateien, die gerade hochgeladen werden, pausieren, statt sie abzubrechen.
  • Kann die Upload-Reihenfolge beliebig ändern.
  • Kann einen Auswahldialog für einzelne oder mehrere Dateien bereitstellen.
  • Kann die Länge der Upload-Warteschlange, die Dateigröße und die Anzahl der hochgeladenen Dateien begrenzen.
  • Kann 0-Byte-Dateien besser verarbeiten.
  • Jede Datei hat ein Upload-Bestätigungsereignis.

Übersicht

HTML-Upload

Das standardmäßige HTML-Upload-Feld stellt nur eine Schaltfläche und ein Textfeld bereit, mit denen Benutzer eine einzelne Datei auswählen können. Anschließend wird sie über ein Formular übermittelt. Die gesamte Datei muss warten, bis der Upload abgeschlossen ist, bevor Dateigröße und Erweiterung bestätigt und geprüft werden können, und während des Uploadvorgangs gibt es kaum Rückmeldung. Dies verursacht einige Unannehmlichkeiten.

Aber der traditionelle HTML-Upload ist sehr einfach, ein einziger Schritt, und wird von allen Browsern unterstützt.

SWFUpload

SWFUpload verwendet einen Flash-Film, um Dateien auszuwählen und hochzuladen. Der Film hat eine anpassbare Schaltfläche, um den Dateiauswahldialog zu aktivieren. Der Dateiauswahldialog ermöglicht es Benutzern, eine einzelne Datei oder mehrere Dateien auszuwählen. Die Arten von Dateien, die ausgewählt werden können, können ebenfalls eingeschränkt werden; Entwickler können Benutzer darauf beschränken, nur bestimmte geeignete Dateien auszuwählen, z. B. *.jgp;*.gif.

Sobald Dateien ausgewählt und OK angeklickt wurde, wird jede Datei validiert und in die Warteschlange gestellt. Wenn Flash die Dateien hochlädt, werden vordefinierte JavaScript-Ereignisse ausgelöst, um die UI-Anzeige auf der Seite zu aktualisieren und außerdem Upload-Status- und Fehlerinformationen in Echtzeit bereitzustellen.

Datei-Uploads sind unabhängig von der Seite und dem Formular. Jede Datei wird separat auf die Verarbeitungsseite hochgeladen, was es dem Server einfach und leicht macht, mit den Dateien umzugehen. Der von Flash bereitgestellte Upload-Dienst bedeutet, dass die gesamte Seite nicht übermittelt oder aktualisiert werden muss. Dies ähnelt ein wenig einer AJAX-Anwendung. Die Formulardaten auf der Seite werden getrennt vom durch Flash gesteuerten Datei-Upload verarbeitet.

Erste Schritte

SWFUpload ist kein Drag-and-Drop-Upload-Steuerelement. Daher sind einige DOM- und JS-Kenntnisse erforderlich. Mehrere Demos zeigen die Funktionen von SWFUpload und wie man sie verwendet, um Aufgaben zu erledigen.

SWFUpload besteht aus 4 Teilen:

  1. Initialisierung und Einstellungen (JavaScript)
  2. JavaScript-Bibliothek: SWFUpload.js
  3. Flash-Steuerelement: swfupload.swf und swfupload_fp9.swf
  4. Mechanismus zur Ereignisbehandlung (JavaScript)

Viele Probleme bei der Verwendung von SWFUpload stammen aus der Einrichtung. Fehlerhafte Ereignisbehandlung, Flash-/Browser-Bugs oder Serverkonfiguration.

Initialisierung und Einstellungen

SWFUpload muss auf der Seite initialisiert werden. Dies geschieht üblicherweise im window.onload-Ereignis von JS. Der SWFUpload-Konstruktor muss ein Objekt vom Typ Object (JS) erhalten. Die Daten dieses Objekts werden direkt an den Konstruktor übergeben.

Die Referenz des initialisierten SWFUpload-Objekts sollte gut gespeichert werden (yukon: d. h., speichern Sie sie in einer Variablen, wie 'swfu' im Beispiel), da diese Referenz auch beim Starten von Datei-Uploads und beim Steuern anderer Funktionen benötigt wird.

Beispiel:Beim Initialisieren von SWFUpload übergeben Sie direkt ein anonymes Objekt, um Parameter zu konfigurieren.

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" //文件大小限制 }); };

Beispiel:Sie können auch eine Objektvariable (settings_object) verwenden, um Konfigurationsparameter beim Initialisieren von SWFUpload zu übergeben.

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); };

JavaScript-Bibliothek

Um SWFUpload zu verwenden, muss die JS-Bibliotheksdatei (swfupload.js) in die Seite eingebunden werden, die es verwendet.

Sobald das SWFUpload-Objekt erstellt wurde, kann auf viele Funktionen zugegriffen werden. Entwickler können dies verwenden, um SWFUpload zu steuern.

Beispiel:Wie die swfupload.js-Bibliothek eingebunden wird

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

Beispiel:SWFUpload bei Bedarf initialisieren.

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中创建一个"选择"按钮 });

[Neuer Inhalt] Flash-Steuerelement

Die JavaScript-Bibliothek SWFUpload kann das Flash-Steuerelement (swfupload.swf oder swfupload_fp9.swf) dynamisch laden.

Die Dateiadresse des Flash-Steuerelements muss bei der Initialisierung im SWFUpload-Einstellungsobjekt definiert werden.

Das Flash-Steuerelement ist eigentlich ein kleiner Flash-Film, der Dateiauswahl, Validierung und Upload steuern kann.

Was es dem Benutzer auf der Seite präsentiert, ist eine Schaltfläche mit einer anpassbaren Benutzeroberfläche, und es kann die Flash-Player-Version (9, 10) erkennen und automatisch das für die Player-Version des Benutzers geeignete Flash-Steuerelement laden.

Verwenden Sie flash_url und flash9_url, um die Pfade von swfupload.swf oder swfupload_fp9.swf festzulegen. (yukon: Die vorherigen Beispiele haben dies bereits erwähnt.)

Ereignishandler

Entwickler müssen eine Reihe von JavaScript-Funktionen erstellen, um SWFUpload-Ereignisse zu behandeln. Diese Funktionen werden ausgelöst, wenn verschiedene wichtige Ereignisse auftreten.

Durch die Behandlung von SWFUpload-Ereignissen können Entwickler Rückmeldungen zum Upload-Fortschritt, zu Fehlermeldungen und zum Abschluss des Uploads geben. Hinweis: Entwickler sollten keine in SWFUpload.prototype gespeicherten Funktionen überschreiben.

Beispiel:SWFUpload-Ereignisbehandlung und Initialisierung.

// uploadStart event handler function. The value of the "upload_start_handler" property in the settings object should be the name of this function. 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 event handler function. The value of the "upload_success_handler" property in the settings object should be the name of this function. 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 JavaScript-Objekt

Konstruktor

SWFUpload(Einstellungsobjekt) //SWFUpload(Einstellungsobjekt)

Gibt zurück:Eine SWFUpload-Instanz

var swfupload_instance = new SWFUpload(settings_object);

Globale Variablen und Konstanten

SWFUpload definiert einige globale Variablen und Konstanten, die für fortgeschrittene SWFUpload-Anwendungen und die Fehlerbehandlung nützlich sind. Sie sind alle schreibgeschützt.

[Neuer Inhalt] SWFUpload.instances

SWFUpload.instances ist ein Array-Objekt, das Referenzen auf alle SWFUpload-Instanzen auf einer Seite speichert. Flash Player verlässt sich auf dieses Array von Objekten, um die richtigen Event-Handler-Funktionen aufzurufen. Der Index des SWFUpload.instances-Objektarrays (SWFUpload.instances[index]) ist die movieName-Eigenschaft.

SWFUpload.movieCount

SWFUpload.movieCount ist eine globale Variable, die aufzeichnet, wie viele SWFUpload-Objektinstanzen auf der Seite erstellt wurden, und sicherstellt, dass jedem Flash-Movie ein eindeutiger movieName zugewiesen wird.

[Neuer Inhalt] SWFUpload.QUEUE_ERROR

SWFUpload.QUEUE_ERROR ist ein einfaches JavaScript-Objekt, das Konstanten für Warteschlangen-Fehlercodes enthält. Es wird verwendet, um zu bestimmen, welcher Fehlercode gesendet wird, wenn ein Dateiwarteschlangenfehler (fileQueueError) auftritt.

SWFUpload.QUEUE_ERROR = { QUEUE_LIMIT_EXCEEDED : -100, FILE_EXCEEDS_SIZE_LIMIT : -110, ZERO_BYTE_FILE : -120, INVALID_FILETYPE : -130 };
  • QUEUE_LIMIT_EXCEEDED - Gibt an, dass der Benutzer zu viele Dateien in die Warteschlange gestellt hat und damit die maximale Warteschlangenlänge überschritten hat. Sobald jedoch Dateien in der Warteschlange hochgeladen oder entfernt wurden, kann der Benutzer weiterhin Dateien zur Upload-Warteschlange hinzufügen.
  • FILE_EXCEEDS_SIZE_LIMIT - Gibt an, dass die Datei das festgelegte Dateigrößenlimit (file_size_limit) überschreitet.
  • ZERO_BYTE_FILE - Gibt an, dass die ausgewählte Datei 0 Bytes groß ist. Flash Player kann keine leeren Dateien verarbeiten. Das Hochladen von Windows-Verknüpfungssymbolen kann diesen Fehler ebenfalls auslösen.
  • INVALID_FILETYPE - Gibt an, dass die Dateiendung der ausgewählten Datei nicht mit den zulässigen Typen übereinstimmt. Dieser Fehler kann ausgelöst werden, wenn der Benutzer manuell einen Dateinamen mit einer falschen Endung eingibt, anstatt eine Datei per Mausklick auszuwählen.

[Neuer Inhalt] SWFUpload.UPLOAD_ERROR

SWFUpload.UPLOAD_ERROR ist ebenfalls ein einfaches JavaScript-Objekt, das Konstanten für Upload-Fehlercodes enthält. Es wird verwendet, um zu bestimmen, welcher Fehlercode gesendet wird, wenn ein Upload-Fehlerereignis (uploadError) auftritt.

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 - Es wurde ein Upload auf den Server versucht, aber der Server hat keinen 200-Statuscode zurückgegeben (200 bedeutet keine Fehler).
  • MISSING_UPLOAD_URL - Die Upload-URL (upload_url) ist nicht festgelegt.
  • IO_ERROR - Beim Lesen und Senden der Datei ist ein Fehler aufgetreten. Dies geschieht normalerweise, wenn der Server die Verbindung unerwartet schließt.
  • SECURITY_ERROR - Ein Sicherheitsfehler; der Upload hat gegen Sicherheitsbeschränkungen verstoßen. Dies ist selten.
  • UPLOAD_LIMIT_EXCEEDED - Der Benutzer hat versucht, mehr Dateien hochzuladen als das voreingestellte Limit.
  • UPLOAD_FAILED - Beim Versuch, den Upload zu initialisieren, ist ein Fehler aufgetreten. Dies ist selten.
  • SPECIFIED_FILE_ID_NOT_FOUND - Eine Datei begann mit dem Hochladen, aber die Datei konnte nicht gefunden werden. (yukon: Nachdem die Datei ausgewählt und der Warteschlange hinzugefügt wurde, hat der Benutzer die Datei auf dem Datenträger umbenannt oder gelöscht usw.)
  • FILE_VALIDATION_FAILED - Beim Start des Uploads wurde ein Fehler zurückgegeben.
  • FILE_CANCELLED - Der Upload wurde abgebrochen (die Funktion cancelUpload wurde aufgerufen).
  • UPLOAD_STOPPED - Der Upload wurde pausiert (die Funktion stopUpload wurde aufgerufen).
  • RESIZE_ERROR - Beim Ändern der Größe des Bildes ist ein Fehler aufgetreten.

[Neuer Inhalt] SWFUpload.FILE_STATUS

SWFUpload.FILE_STATUS ist ein JavaScript-Objekt, das Dateistatuscode-Konstanten enthält. Es wird verwendet, um die Dateistatus-Eigenschaft des File-Objekts zu prüfen.

SWFUpload.FILE_STATUS = { QUEUED : -1, IN_PROGRESS : -2, ERROR : -3, SUCCESS : -4, CANCELLED : -5 };
  • QUEUED - Gibt an, dass die Datei in der Upload-Warteschlange wartet.
  • IN_PROGRESS - Gibt an, dass die Datei derzeit hochgeladen wird.
  • ERROR - Gibt an, dass die Datei einen Warteschlangen- oder Upload-Fehler verursacht hat.
  • COMPLETE - Gibt an, dass die Datei erfolgreich zum Server übertragen wurde.
  • CANCELLED - Gibt an, dass der Upload dieser Datei abgebrochen wurde (die Funktion cancelUpload wurde aufgerufen).

[Neuer Inhalt] SWFUpload.UPLOAD_TYPE [Zweck: Bestimmt den Upload-Typ]

SWFUpload.UPLOAD_TYPE ist ein JavaScript-Objekt, das Upload-Typ-Konstanten enthält. Es wird verwendet, um die Upload-Typ-Eigenschaft des File-Objekts zu prüfen.

  • NORMAL - Ein normaler SWFUpload-Upload.
  • RESIZED - Ein Upload eines skalierten Bildes, bei dem die Daten per HTTP POST gesendet werden.

[Neuer Inhalt] SWFUpload.BUTTON_ACTION [Zweck: Bestimmt die Aktion, die beim Klicken auf die Schaltfläche ausgeführt wird]

SWFUpload.BUTTON_ACTION ist ein JavaScript-Objekt, das Konstanten für Button-Aktionscodes enthält. Es wird verwendet, um den Wert von button_action festzulegen und dadurch die Reaktionen der interaktiven Schaltfläche im Flash-Film auf verschiedene Mausaktionen zu konfigurieren.

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

  • SELECT_FILE – Wenn auf die Schaltfläche geklickt wird, öffnet sich ein Dialog zur Auswahl einer einzelnen Datei. Das (in JavaScript definierte) Mausklick-Ereignis wird nicht ausgelöst.
  • SELECT_FILES – Wenn auf die Schaltfläche geklickt wird, öffnet sich ein Dialog zur Auswahl mehrerer Dateien. Das (in JavaScript definierte) Mausklick-Ereignis wird nicht ausgelöst.
  • START_UPLOAD – Wenn auf die Schaltfläche geklickt wird, wird die erste Datei in der Upload-Warteschlange hochgeladen. Das (in JavaScript definierte) Mausklick-Ereignis wird nicht ausgelöst.
  • NONE – In diesem Fall wird das (in JavaScript definierte) Mausklick-Ereignis ausgelöst.
  • JAVASCRIPT – Entspricht NONE. Dieser Wert ist veraltet.

[Neuer Inhalt] SWFUpload.CURSOR [Zweck: Ändert den Stil des Mauszeigers]

SWFUpload.CURSOR ist ein JavaScript-Objekt, das Konstanten für den Button-Cursor enthält. Es wird verwendet, um den Wert von button_cursor festzulegen und dadurch den Mauszeigerstil zu ändern, wenn sich der Zeiger über der Schaltfläche befindet.

SWFUpload.CURSOR = { ARROW : -1, HAND : -2 }
  • ARROW – Der Cursor erscheint als Pfeilzeiger.
  • HAND – Der Cursor erscheint als Hand.

[Neuer Inhalt] SWFUpload.WINDOW_MODE [Zweck: Der Anzeigemodus des Films]

SWFUpload.WINDOW_MODE ist ein JS-Array-Objekt, das Konstanten für den wmode-Parameter des Button-Films enthält. Es wird verwendet, um dem Browser mitzuteilen, wie der Flash-Film gerendert werden soll.

Einige WINDOW_MODE/WMODE-Einstellungen können Browserprobleme verursachen; siehe unten für Details.Bekannte Probleme.

SWFUpload.WINDOW_MODE = { WINDOW : "window", TRANSPARENT : "transparent", OPAQUE : "opaque" };
  • WINDOW ist der Standardmodus. Der Flash-Film wird auf der obersten Ebene der Seite gezeichnet.
  • OPAQUE ermöglicht es anderen Seitenelementen, diesen Button-Film zu überdecken.
  • TRANSPARENT. Der Button-Hintergrund ist transparent, sodass HTML-Elemente darunter angezeigt werden können.

[Neu] SWFUpload.RESIZE_ENCODING [Zweck: gibt das Bildkodierungsformat an]

SWFUpload.RESIZE_ENCODING ist ein JS-Array-Objekt, das Konstanten für den Kodierungstyp bei der Größenänderung enthält. Es wird verwendet, um das Kodierungsformat des in der Größe geänderten Bildes anzugeben.

  • JPEG - JPEG-Kodierungsformat
  • PNG - PNG-Kodierungsformat

[Neu] SWFUpload.onload [Zweck: definiert die Funktion, die nach dem Laden der Seite ausgeführt werden soll]

onload ist eine Funktion, die über die Methode addDOMLoadEvent des swfobject ausgeführt werden kann. Sie können diese Methode verwenden, um Ihr Skript auszuführen, nachdem die Seite geladen wurde. Sie sollten jedoch sicherstellen, dass Sie keine anderen ähnlichen Methoden verwenden (wie die "Ready"-Methode von jQuery oder dom:loaded von Prototype).

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

Das obige Beispiel initialisiert SWFUpload beim frühesten Browser-Ladeereignis. Die meisten DOM-Ready-Ereignisse werden unmittelbar nach dem window.onload-Ereignis ausgeführt.

Eigenschaften

Bitte beachten Sie die folgenden Beschreibungen der Eigenschaftsliste, wenn Sie diese Eigenschaften verwenden. Wenn eine Nur-Lese- oder Nur-Schreib-Eigenschaft falsch verwendet wird, verursacht dies SWFUpload-Fehler.

[Neuer Inhalt] customSettings (Lesen/Schreiben) [Zweck: benutzerdefinierte Einstellungen für Entwickler]

Die Eigenschaft customSettings ist ein leeres JS-Objekt. Sie wird verwendet, um Daten zu speichern, die sich auf eine SWFUpload-Instanz beziehen. Ihre Inhalte können mit der Eigenschaft custom_settings im settings-Objekt initialisiert werden.

Beispiel:

// 初始化 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" };

Werte, die im customSettings-Objekt gespeichert sind, können von Event-Handlern leicht abgerufen werden: (yukon: Diese Eigenschaft nutzt die dynamischen Funktionen von JS, um Entwicklern ein hohes Maß an Freiheit zu geben)

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

movieName (schreibgeschützt) [Zweck: speichert eine eindeutige Kennung für eine SWFUpload-Instanz]

Enthält den eindeutigen Kennungsnamen für eine SWFUpload-Instanz. Dieser Wert kann an Flash übergeben werden, um die AS-JS-Interaktion zu unterstützen. Er wird verwendet, um die Instanz im SWFUpload.instances-Array zu indizieren. Sie sollten ihn nicht ändern und können ihn auch nicht ändern.

Methoden

Die folgenden Methoden werden verwendet, um SWFUpload zu bedienen. Einige Methoden können an Klick-Ereignisse von DOM-Elementen gebunden werden, und andere werden intern von SWFUpload bei der Behandlung von Ereignissen verwendet.

object addSetting(setting_name, value, default_value)

Veraltet Die Funktion addSetting legt einen Einstellungswert fest. Wenn der Wert undefined ist, wird default_value verwendet. Die Funktion wird von SWFUpload verwendet.

addSetting gibt den Wert zurück, der in der Einstellung gespeichert wurde.

object getSetting(setting_name)

Veraltet Die Funktion getSetting ruft den Wert einer Einstellung ab. Wenn die Einstellung nicht gefunden wird, wird eine leere Zeichenkette zurückgegeben.

object retrieveSetting(setting_value, default_value)

In v2.1.0 entfernt. Die Funktion retrieveSetting ist der Funktion addSetting ähnlich, außer dass sie das interne Einstellungsobjekt nicht ändert. retrieveSetting gibt den setting_value zurück, es sei denn, dieser ist undefined; in diesem Fall gibt sie den default_value zurück.bool destroy() [Zweck: zerstört eine SWFUpload-Instanz]

Dies ist eine Hilfsfunktion.

In v2.1.0 hinzugefügt

Entfernt ein SWF-DOM-Element und zerstört die internen Referenzen von SWFUpload. Es wird verwendet, um eine SWFUpload-Instanz vollständig von der Seite zu entfernen, wodurch Speicherleckprobleme im IE verhindert werden.

Gibt true zurück, wenn erfolgreich entfernt; gibt false zurück, wenn ein Fehler auftritt und die SWFUpload-Instanz in einem inkonsistenten Zustand zurückbleibt.

void displayDebugInfo() [Zweck: gibt Debug-Informationen aus]

Bei Debug-Ereignissen gibt displayDebugInfo() die SWFUpload-Einstellungen aus. Wenn die Debug-Einstellung während der Initialisierung auf true gesetzt ist, wird diese Funktion automatisch aufgerufen.

Nicht empfohlen. Inkompatibel mit Flash Player 10.

void selectFile()

Nicht empfohlen. Inkompatibel mit Flash Player 10.

selectFile veranlasst das Flash Control, ein Dialogfenster zur Dateiauswahl anzuzeigen. Im Dialogfenster kann eine einzelne Datei ausgewählt werden.

Der Aufruf von selectFile startet die Datei-Ereignis-Kette.

void selectFiles()

Nicht empfohlen. Inkompatibel mit Flash Player 10.

selectFiles bewirkt, dass das Flash-Steuerelement ein Fenster zur Dateiauswahl anzeigt. Im Dialogfenster können mehrere Dateien ausgewählt werden.

Der Aufruf von selectFiles beginnt die Dateiereigniskette.

void startUpload(file_id) [Zweck: startet das Hochladen von Dateien]

startUpload akzeptiert den Parameter file_id, um eine Datei hochzuladen. Wenn kein file_id-Wert übergeben wird, wird standardmäßig die erste Datei in der Upload-Warteschlange hochgeladen.

Der Aufruf von startUpload löst die Upload-Ereigniskette aus.

[Neu] void startResizedUpload(file_id, width, height, encoding, quality, allowEnlarging) [Zweck: Hochladen mit Bildgrößenänderung]

startResizedUpload akzeptiert den Parameter file_id, um eine Datei hochzuladen. SWFUpload versucht, die Breite/Höhe der Datei und andere Einstellungen anzupassen (wenn das Bildformat von Flash unterstützt wird). Wenn das Bildformat nicht unterstützt wird, wird ein uploadError ausgelöst.

Die Parameter width und height werden verwendet, um die maximale Breite und Höhe des Bildes festzulegen. Das Seitenverhältnis bleibt jedoch während der Größenänderung erhalten.

Der encoding-Wert muss eine Konstante in SWFUpload.RESIZE_ENCODING sein.

quality kann nur verwendet werden, um die Qualität von Bildern im JPEG-Format anzupassen. Es akzeptiert einen Bereich von 0-100. Wenn es außerhalb dieses Bereichs liegt, wird es auf 0 oder 100 gezwungen.

Der Parameter allowEnlarging legt fest, ob SWFUpload zulässt, dass das Originalbild vergrößert wird (Standard ist true), wenn Breite/Höhe des Originalbilds kleiner als die angegebene Breite und Höhe sind. Wenn auf false gesetzt, wird das Bild weiterhin kodiert, aber nicht vergrößert.

Der Aufruf der Methode startResizedUpload löst die normale Upload-Ereigniskette aus. Flash Player stellt jedoch keine uploadProgress-Ereignisse regelmäßig bereit. SWFUpload sendet nur simulierte uploadProgress-Ereignisse mit 0% und 100%.

Das skalierte Bild wird per POST (statt als FILE) übermittelt, weil Flash Player 10 Sicherheitsfunktionen eingeführt hat.Die PHP-Verarbeitungsseite für den Upload mit Bildverkleinerung unterscheidet sich von der normalen PHP-Verarbeitungsseite für den Upload:

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

void cancelUpload(file_id, trigger_error_event) [Zweck: entfernt einen Upload]

cancelUpload akzeptiert den Parameter file_id, um einen Datei-Upload zu entfernen. Diese Datei wird aus der Upload-Warteschlange entfernt.

Wenn keine file_id angegeben ist, wird standardmäßig die erste Datei in der Upload-Warteschlange abgebrochen.

Wenn der optionale Parameter trigger_error_event auf false gesetzt ist, wird das uploadError-Ereignis nicht ausgelöst.

void stopUpload() [Zweck: stoppt den Datei-Upload]

stopUpload stoppt die aktuell hochladende Datei und stellt sie wieder in die Upload-Warteschlange ein. (yukon: im Gegensatz zum Entfernen bricht es den Upload dieser Datei ab, entfernt sie aber nicht aus der Upload-Warteschlange)

Wenn stopUpload aufgerufen wird und eine Datei hochgeladen wird, wird das uploadError-Ereignis ausgelöst; wenn derzeit keine Datei hochgeladen wird, erfolgt keine Aktion und es wird kein Ereignis ausgelöst.

[Neu] bool requeueUpload(file_id oder index) [Zweck: erneut einreihen]

requeueUpload fügt eine zuvor eingereihte Datei wieder der wartenden Upload-Warteschlange hinzu.

Gibt false zurück, wenn die Datei nicht gefunden wird oder wenn sie derzeit hochgeladen wird.

Hinweis: Eine erneut eingereihte Datei wird nicht erneut auf Dateigröße, Warteschlangengröße, Gesamtuploadanzahl oder andere Beschränkungen geprüft; sie wird nur zur Warteschlange hinzugefügt, wenn die Dateireferenz noch existiert.

object getStats() [Zweck: gibt das aktuelle Stats-Objekt zurück]

Gibt das Stats-Objekt zurück.

void setStats(stats_object) [Zweck: setzt oder ändert das Stats-Objekt]

Setzt oder ändert das Stats-Objekt. Wenn Sie die Anzahl erfolgreicher Uploads oder die Anzahl fehlgeschlagener Uploads nach Abschluss des Uploads ändern möchten, können Sie diese Methode verwenden.

object getFile(file_id|index) [Zweck: ruft ein bestimmtes Dateiobjekt aus der Warteschlange ab]

getFile gibt das Dateiobjekt in der Warteschlange zurück, indem es eine Datei-ID (die ID eines Dateiobjekts) oder einen Dateiindex (das index-Attribut eines Dateiobjekts) akzeptiert.

Wenn eine file_id an getFile übergeben wird, können nur Dateien in der Warteschlange abgerufen werden; wenn keine Datei gefunden wird, wird null zurückgegeben.

Wenn ein index an getFile übergeben wird, können alle Dateien abgerufen werden, die versucht wurden, in die Warteschlange aufgenommen zu werden (einschließlich Dateien, die während des Einreihens Fehler verursacht haben). Wenn der index außerhalb des gültigen Bereichs liegt, wird null zurückgegeben.

[Neu] object getQueueFile(file_id|index) [Zweck: gibt ein bestimmtes Dateiobjekt in der Upload-Warteschlange zurück]

getQueueFile wird verwendet, um ein einzelnes Dateiobjekt aus der Upload-Warteschlange zurückzugeben. Genauer gesagt gibt es das Dateiobjekt in der Warteschlange zurück, indem es eine Datei-ID (die ID eines Dateiobjekts) oder einen Dateiindex (das index-Attribut eines Dateiobjekts) akzeptiert. Der index beginnt bei 0.

Wenn eine file_id an getQueueFile übergeben wird, können nur Dateien aus der Warteschlange für ausstehende Uploads abgerufen werden; wenn keine Datei gefunden wird, wird null zurückgegeben.

Wenn ein Index an getQueueFile übergeben wird, können nur Dateien aus der Warteschlange für ausstehende Uploads abgerufen werden. Zum Beispiel: getQueueFile(0) gibt ein Dateiobjekt am Kopf der Warteschlange für ausstehende Uploads zurück. Wenn die Funktion startUpload aufgerufen wird, wird sie nach Abschluss des aktuellen Uploads hochgeladen.

(yukon: Der Unterschied zwischen den beiden oben genannten Methoden könnte sein: getFile ruft Dateien aus der Dateiwarteschlange ab, einschließlich hochgeladener, fehlerhafter und ausstehender Upload-Warteschlangen. getQueueFile ruft nur Dateien aus der Warteschlange für ausstehende Uploads ab.)

void addPostParam(name, value) [Zweck: Fügt ein Schlüssel/Wert-Paar hinzu]

addPostParam fügt ein Schlüssel/Wert-Paar hinzu, das bei jedem Datei-Upload per POST mitgesendet wird.

Es entspricht demselben Schlüssel/Wert-Paar in der Einstellung post_params. Wenn der Wert bereits in post_params vorhanden ist, wird er tatsächlich überschrieben.

void removePostParam(name) [Zweck: Entfernt ein Schlüssel/Wert-Paar]

removePostParam entfernt ein Schlüssel/Wert-Paar, das zuvor bei jedem Datei-Upload per POST mitgesendet wurde.

Es entspricht demselben Schlüssel/Wert-Paar in der Einstellung post_params. Wenn der Wert bereits in post_params vorhanden ist, wird er tatsächlich entfernt.

bool addFileParam(file_idspan>, name, value)

Fügt ein POST-Schlüssel/Wert-Paar zu einem bestimmten Dateiobjekt mit der angegebenen file_id hinzu. Wenn das hinzugefügte name-Attribut bereits vorhanden ist, wird der ursprüngliche Wert überschrieben.

Wenn Sie POST-Werte zu allen Dateiobjekten hinzufügen müssen, können Sie die Eigenschaft post_params in den Einstellungen verwenden.

bool removeFileParam(file_id, name)

Löscht das von addFileParam hinzugefügte POST-Wertpaar.

Gibt false zurück, wenn diese Eigenschaft nicht in den POST-Einstellungen vorhanden ist.

void setUploadURL(url)

Ändert dynamisch die Eigenschaft upload_url in den Einstellungen.

void setPostParams(param_object)

Ändert dynamisch post_params; alle vorherigen Eigenschaften werden überschrieben. param_object muss ein einfaches JavaScript-Objekt sein, und alle Eigenschaften und Werte müssen vom Typ String sein.

void setFileTypes(types, description)

Ändert dynamisch file_types und file_types_description in den Einstellungen; beide Parameter sind erforderlich.

void setFileSizeLimit(file_size_limit)

Ändert dynamisch file_size_limit in den Einstellungen; diese Änderung gilt für die nachfolgende Dateigrößenfilterung. Der Parameter file_size_limit akzeptiert eine Einheit; gültige Einheiten sind B, KB, MB, GB, und die Standardeinheit ist KB.

Zum Beispiel: 2147483648 B, 2097152, 2097152KB, 2048 MB, 2 GB

void setFileUploadLimit(file_upload_limit)

Ändert file_upload_limit dynamisch in den Einstellungen; der spezielle Wert 0 bedeutet unbegrenzt.

Hinweis:Dies begrenzt die Gesamtzahl der Dateien, die unter der Kontrolle einer SWFUpload-Instanz erfolgreich hochgeladen werden.

void setFileQueueLimit(file_queue_limit)

Ändert file_queue_limit dynamisch in den Einstellungen; der spezielle Wert 0 bedeutet unbegrenzt.

Hinweis:Dies begrenzt die Gesamtzahl der Dateien, die in der Datei-Upload-Warteschlange eingereiht werden dürfen (Dateien, die die Warteschlangenerkennung bestehen, werden der Upload-Warteschlange hinzugefügt, um auf den Upload zu warten).

void setFilePostName(file_post_name)

Ändert file_post_name dynamisch in den Einstellungen. Beachten Sie, dass FlashPlayer diese Einstellung in der Linux-Umgebung ignoriert.

void setUseQueryString(use_query_string)

Ändert use_query_string dynamisch in den Einstellungen. Wenn auf true gesetzt, sendet SWFUpload Daten über GET; wenn auf false gesetzt, sendet es Daten über POST.

void setDebugEnabled(debug_enabled)

Aktiviert/deaktiviert die Debug-Ausgabe dynamisch; der Parameter debug_enabled ist ein boolescher Wert.

void setButtonImageURL(url)

Ändert dynamisch das Button-Bild. Der Parameter url ist ein Bild relativ zur SWF-Datei oder eine absolute Adresse (zum Beispiel: ein relativer Pfad, der mit / beginnt, oder ein absoluter Pfad: http://www.swfupload.org/buttonImage.png). Alle von FLASH unterstützten Bildtypen können verwendet werden (gif, jpg, png).

Das Button-Bild muss nach bestimmten Regeln verarbeitet werden (CSS Sprite). Das Button-Bild muss die 4 Zustände des Buttons enthalten, von oben nach unten: normal, hover, down/click, disabled. (Siehe das Bild in der offiziellen Demo.)

void setButtonDimensions(width, height)

Ändert dynamisch die Größe des SWF-Films, um sie an die Größe des Button-Bilds anzupassen. Der Wert muss eine reine Zahl sein und darf keine Längeneinheiten enthalten. Die Höhe muss 1/4 der gesamten Höhe des Button-Bilds betragen, um eine korrekte Anzeige zu gewährleisten.

void setButtonText(text)

Legt den im Flash-Button angezeigten Text dynamisch fest, wobei HTML unterstützt wird. Der Stil des HTML-Texts kann über CSS-Selektoren zusammen mit der Methode setButtonTextStyle festgelegt werden. Wenn der Text zu groß ist, wird der überlaufende Teil ausgeblendet. Einzelheiten zur HTML-Unterstützung von Flash-Text finden Sie unter...Adobes Flash-Dokumentation。

void setButtonTextStyle(css_style_text)

Zusammen mit der Methode setButtonText können CSS-Stile verwendet werden, um den Textstil im Flash-Button dynamisch festzulegen. Einzelheiten zur CSS-Unterstützung von Flash-Text finden Sie unter...Adobes Flash-Dokumentation

void setButtonTextPadding(left, top)

Legt den linken und rechten Innenabstand des Flash-Button-Texts fest. Der Wert kann negativ sein.

void setButtonDisabled(isDisabled)

Wenn auf 'true' gesetzt, ist die Flash-Schaltfläche deaktiviert, und alle Schaltflächenaktionen und -operationen werden ignoriert.

void setButtonAction(buttonAction)

Definiert die Aktion, die nach dem Klick mit der Maus ausgeführt wird. Die Konstanten-Enumeration BUTTON_ACTION speichert die verfügbaren Werte für diese Methode.

void setButtonCursor(buttonCursor)

Legt den Stil des Mauszeigers fest, wenn auf die Schaltfläche gezeigt wird. Die Konstanten-Enumeration CURSOR speichert die verfügbaren Werte für diese Methode.

[Neuer Inhalt] Ereignisse

SWFUpload löst während des Betriebs eine Reihe von Ereignissen aus. Entwickler können diese Callback-Handling-Ereignisse verwenden, um die UI zu steuern, Vorgänge zu steuern oder Fehler zu melden.

Alle Ereignisse werden im Kontext der SWFUpload-Instanz aufgerufen, sodass mit this in diesen Callback-Ereignissen direkt auf das Instanzobjekt zugegriffen werden kann, das das Ereignis ausgelöst hat.

Alle Ereignisse sollten während der Initialisierung der Instanz im Parameter setting voreingestellt werden.

[Neu:]

Beim Hochladen einer Datei werden Ereignisse in der folgenden Reihenfolge aufgerufen (Upload-Ereigniskette):

  • Upload-Start mit zusätzlicher Bildgrößenänderungsfunktion uploadResizeStart
  • Normaler Upload-Start uploadStart
  • Upload läuft uploadProgress (wird während des Dateiuploadvorgangs wiederholt aufgerufen)
  • Upload-Fehler uploadError (wird aufgerufen, wenn bestimmte Fehler auftreten; der Upload wird abgebrochen oder gestoppt)
  • Upload-Erfolg uploadSuccess (die Datei wurde erfolgreich hochgeladen und der Server hat verwendbare Daten empfangen)
  • Upload abgeschlossen uploadComplete (Upload beendet, SWFUpload ist bereit, den nächsten Upload zu starten)

flashReady()

Diese Ereignisfunktion ist ein internes Ereignis und kann daher nicht überschrieben werden. Wenn das geladene Flash-Steuerelement alle Initialisierungsvorgänge abgeschlossen hat, wird dieses Ereignis ausgelöst, um SWFUpload zu benachrichtigen, dass es verschiedene Befehle akzeptieren kann.

Hinweis:Entspricht dem benutzerdefinierten Ereignis swfupload_loaded_handler in den Einstellungen.

[Neu] swfUploadPreload()

Das swfUploadPreload-Ereignis wird ausgelöst, nachdem SWFUpload verfügbare Funktionen bestätigt hat, aber bevor der Flash-Film vollständig geladen ist. Wenn der Handler dieses Ereignisses false zurückgibt, stoppt swfupload das Laden. Es wird typischerweise verwendet, um Fälle zu behandeln, in denen der Browser einen wichtigen Funktionsparameter nicht unterstützt.

Dieser Ereignishandler kann in der Eigenschaft swfupload_preload_handler des Einstellungsobjekts festgelegt werden.

[Neu] swfUploadLoadFailed()

Wenn die Seite den Flash-Film nicht normal laden kann. Normalerweise, weil Flash Player nicht installiert ist oder seine Version niedriger als 9.0.28 ist.

Dieser Event-Handler kann in der Eigenschaft swfupload_load_failed_handler des Einstellungsobjekts festgelegt werden.

[Neu] swfUploadLoaded()

Das swfUploadLoaded-Ereignis wird ausgelöst, nachdem Flash geladen und bereit ist. Es ist konfigurierbar. Das swfUploadLoaded-Ereignis benachrichtigt Sie, dass Flash geladen ist und alle Methoden sicher ausgeführt werden können.

Dieser Event-Handler kann in der Eigenschaft swfupload_loaded_handler des Einstellungsobjekts festgelegt werden.

[Neu] mouseClick()

Das mouseClick-Ereignis wird nur ausgelöst, wenn die Schaltfläche angeklickt wird (und der Wert der Einstellung button_action SWFUpload.BUTTON_ACTION.NONE ist oder die Flash-Schaltfläche auf deaktiviert gesetzt ist). Wenn der Wert der Einstellungen button_action ein anderer ist oder die Flash-Schaltfläche aktiviert ist, wird dieses Ereignis nicht ausgelöst.

Diese Event-Handler-Funktion kann in der Eigenschaft mouse_click_handler des Einstellungsobjekts festgelegt werden.

[Neu] mouseOver()

Das mouseOver-Ereignis wird ausgelöst, wenn die Maus über einen beliebigen Teil des Flash-Films bewegt wird.

Diese Event-Handler-Funktion kann in der Eigenschaft mouse_over_handler des Einstellungsobjekts festgelegt werden.

[Neu] mouseOut()

Das mouseOut-Ereignis wird ausgelöst, wenn die Maus den Flash-Film verlässt.

Diese Ereignishandlerfunktion kann in der Eigenschaft mouse_out_handler des settings-Objekts festgelegt werden.

fileDialogStart()

Dieses Ereignis wird ausgelöst, nachdem selectFile oder selectFiles aufgerufen wurde, und bevor der Dateiauswahldialog angezeigt wird. Es kann jeweils nur ein Dateidialog existieren.Diese Ereignishandlerfunktion wird jedoch erst ausgeführt, wenn der Dateiauswahldialog geschlossen ist.

Diese Ereignishandlerfunktion kann in der Eigenschaft file_dialog_start_handler des settings-Objekts festgelegt werden.

fileQueued(Dateiobjekt)

Wenn die Dateien ausgewählt wurden und sich der Dateiauswahldialog schließt und verschwindet, wird dieses Ereignis, sofern die ausgewählten Dateien erfolgreich zur Upload-Warteschlange hinzugefügt wurden, einmal für jede erfolgreich hinzugefügte Datei ausgelöst (N erfolgreich zur Warteschlange hinzugefügte Dateien, das Ereignis wird N-mal ausgelöst).

Entspricht dem benutzerdefinierten Ereignis file_queued_handler in settings.

[Neuer Inhalt]fileQueueError(Dateiobjekt, Fehlercode, Meldung)

 

Wenn der Dateiauswahldialog geschlossen wird und die ausgewählten Dateien nicht zur Upload-Warteschlange hinzugefügt werden können, wird dieses Ereignis einmal für jede Datei ausgelöst, bei der ein Fehler aufgetreten ist (dieses Ereignis und das fileQueued-Ereignis werden ausschließlich ausgelöst; beim Hinzufügen einer Datei zur Warteschlange gibt es nur zwei Möglichkeiten: Erfolg oder Fehler).

Mögliche Gründe für Fehler in der Dateiwarteschlange: 1. Überschreiten des Upload-Größenlimits, 2. Datei ist null Bytes groß, 3. Überschreiten des Dateiwarteschlangen-Mengenlimits, 4. Ungültiger Dateityp außerhalb der erlaubten Typen.

(yukon: nach dem Testen ist der Inhalt der Nachricht wie folgt:

1. Überschreitet das Upload-Größenlimit: message=Dateigröße überschreitet das erlaubte Limit.

2. Datei ist null Bytes: message=Datei ist null Bytes und kann nicht hochgeladen werden.

3. Überschreitet das Mengenlimit der Dateiwarteschlange: message=int (bezieht sich auf das von Ihnen festgelegte Warteschlangengrößenlimit).

4. Ungültiger Dateityp außerhalb der erlaubten Typen: message=Datei ist kein erlaubter Dateityp.

Wenn Sie diese Nachrichten ändern möchten, ändern Sie sie bitte in swfupload.as im Open-Source-Paket und kompilieren Sie sie dann erneut zu swfupload.swf.

)

Die konkrete Fehlerursache kann aus dem Fehlercode-Parameter ermittelt werden. Der Typ des Fehlercodes ist in den Definitionen in SWFUpload.QUEUE_ERROR ersichtlich.

Erinnerung:Entspricht dem benutzerdefinierten Ereignis file_queue_error_handler in den Einstellungen.

Hinweis:Wenn die Anzahl der ausgewählten Dateien, die in die Warteschlange gestellt werden sollen, das Mengenlimit in den Einstellungen überschreitet, werden keine Dateien in die Warteschlange gestellt, und dieses Ereignis wird nur einmal ausgelöst. Wenn das Mengenlimit nicht überschritten wird, wird jede Datei auf Dateityp und Größe überprüft; für Dateien, die die Prüfung nicht bestehen, wird dieses Ereignis ausgelöst, während Dateien, die bestehen, erfolgreich in die Warteschlange gestellt werden.

fileDialogComplete(Anzahl der ausgewählten Dateien, Anzahl der in die Warteschlange gestellten Dateien, Gesamtzahl der Dateien in der Warteschlange)

Wenn der Dateiauswahldialog geschlossen wird und alle ausgewählten Dateien verarbeitet wurden (ob erfolgreich zur Upload-Warteschlange hinzugefügt oder fehlgeschlagen), wird dieses Ereignis ausgelöst. Anzahl der ausgewählten Dateien ist die Anzahl der ausgewählten Dateien, Anzahl der in die Warteschlange gestellten Dateien ist die Anzahl der Dateien aus dieser Auswahl, die erfolgreich zur Warteschlange hinzugefügt wurden.

Erinnerung:Entspricht dem benutzerdefinierten Ereignis file_dialog_complete_handler in den Einstellungen.

Hinweis:Wenn Dateien nach der Auswahl automatisch hochgeladen werden sollen, ist der Aufruf von this.startUpload() in diesem Ereignis eine gute Wahl. Wenn eine strengere Bestimmung erforderlich ist, können Sie vor dem Aufruf des Uploads die Anzahl der in der Warteschlange befindlichen Dateien prüfen; wenn sie größer als 0 ist, können Sie den Upload starten.

[Neu] uploadResizeStart(Dateiobjekt, Breite, Höhe, Kodierung, Qualität)

Die Event-Handler-Funktion uploadResizeStart wird aufgerufen, wenn die Größenänderung eines Bildes beginnt. Während des Größenänderungsprozesses werden keine Fortschrittsereignisse oder Handhabungsmethoden bereitgestellt. Das erneute Kodieren des Bildes kann jedoch einige Zeit dauern. Wenn in diesem Zeitraum ein Fehler auftritt, wird das Ereignis uploadError ausgelöst.

Wenn die Größenänderung abgeschlossen ist, löst SWFUpload weiterhin das Ereignis uploadStart aus und beginnt dieselbe Ereigniskette wie bei einem normalen Upload.

uploadStart(Dateiobjekt)

Das Ereignis uploadStart wird ausgelöst, bevor die Datei mit dem Hochladen auf den Server beginnt. Diese Event-Handler-Funktion kann eine abschließende Validierung vor dem Upload und andere benötigte Operationen durchführen, wie z. B. das Hinzufügen, Ändern oder Löschen von POST-Daten.

Nach Abschluss der letzten Operationen wird der Upload nicht gestartet, wenn die Funktion false zurückgibt; wenn sie true oder nichts zurückgibt, wird der Upload offiziell gestartet.

Zur Erinnerung:Entspricht dem benutzerdefinierten Ereignis upload_start_handler in den Einstellungen.

uploadProgress(Dateiobjekt, Bytes abgeschlossen, Gesamtbytes)

Das Ereignis uploadProgress wird vom Flash-Steuerelement regelmäßig ausgelöst.Es stellt drei Parameter bereit, um auf das hochgeladene Dateiobjekt, die hochgeladenen Bytes bzw. die Gesamtbytes zuzugreifen. Daher können Sie in diesem Ereignis regelmäßig UI-Elemente auf der Seite aktualisieren, um den Upload-Fortschritt zeitnah anzuzeigen.

Hinweis:Unter Linux löst Flash Player dieses Ereignis nur einmal aus, nachdem die gesamte Datei hochgeladen wurde. Offiziell handelt es sich um einen Fehler im Linux Flash Player, und die aktuelle SWFUpload-Bibliothek kann ihn nicht beheben.。

Zur Erinnerung:Entspricht dem benutzerdefinierten Ereignis upload_progress_handler in den Einstellungen.

uploadError(Dateiobjekt, Fehlercode, Nachricht)

Immer wenn der Upload abgebrochen wird oder nicht erfolgreich abgeschlossen wird, dann wird dasuploadErrorEreignis ausgelöst. Der Parameter Fehlercode gibt den aktuellen Fehlertyp an. Für spezifischere Fehlertypen sieheSWFUpload.UPLOAD_ERRORdie Definitionen in. Der Parameter Message stellt die Fehlerbeschreibung dar. Der Parameter File stellt das Dateiobjekt dar, dessen Upload fehlgeschlagen ist.

Zum Beispiel, wenn wir eine nicht existierende Dateiverarbeitungsseite auf dem Server anfordern, dann ist der Fehlercode -200 und die Nachricht 404. Stoppen, Beenden, uploadStart mit Rückgabe false, HTTP-Fehler, IO-Fehler, Überschreiten des Limits für die Anzahl der Datei-Uploads usw. lösen alle dieses Ereignis aus. Der Upload-Fehler wird nicht für Dateien ausgelöst, die abgebrochen wurden, aber noch in der Warteschlange stehen.(Ich habe immer noch Zweifel an dieser offiziellen Aussage. Wie kann eine Datei nach dem Abbruch in der Upload-Warteschlange bleiben?)

Erinnerung:Entspricht dem benutzerdefinierten Ereignis upload_error_handler in den Einstellungen.

Hinweis:Zu diesem Zeitpunkt ist der Datei-Upload-Zyklus noch nicht beendet, daher können Sie hier nicht mit dem Hochladen der nächsten Datei beginnen.

[Neuer Inhalt] uploadSuccess(Dateiobjekt, Serverdaten, empfangene Antwort)

Wenn die Verarbeitung des Datei-Uploads abgeschlossen ist (hier bedeutet "abgeschlossen" nur, dass die Files-Informationen an den Ziel-Handler gesendet wurden; es geht nur um das Senden, nicht darum, ob sie erfolgreich empfangen wurden), und der Server einen HTTP-Status von 200 zurückgibt, wird deruploadSuccessEreignis wird ausgelöst.ServerdatenBezieht sich auf einige vom Server gesendete Daten (zum Beispiel das, was Sie ausgeben), währendempfangene Antwortder vom Server selbst gesendete HTTP-Statuscode ist.

Aufgrund einiger Flash Player-Fehler kann der HTTP-Statuscode möglicherweise nicht abgerufen werden, wodurch das uploadSuccess-Ereignis nicht ausgelöst wird. Aus diesem Grund wurde in Version 2.50 eine neue Eigenschaft assume_success_timeout im settings-Objekt hinzugefügt, um festzulegen, ob die maximale Wartezeit auf den HTTP-Statuscode überschritten wurde; wenn sie überschritten wurde, wird uploadSuccess ausgelöst. In diesem Fall,(empfangene Antwort)wird der Parameter ungültig.

Das http_success im settings-Objekt ermöglicht festzulegen, dass das uploadSuccess-Ereignis auch ausgelöst wird, wenn der HTTP-Statuscode ein Nicht-200-Wert ist. In diesem Fall sind keine Serverdaten vom Flash Player verfügbar.

In

Hinweis:Entspricht dem benutzerdefinierten Ereignis upload_success_handler in settings.

Hinweis:
  1. Serverdaten sind die vom serverseitigen Handler zurückgegebenen Daten.
  2. Zu diesem Zeitpunkt ist der Datei-Upload-Zyklus noch nicht beendet, daher kann hier nicht mit dem Hochladen der nächsten Datei begonnen werden.
  3. Auf der Windows-Plattform muss der serverseitige Handler nach der Verarbeitung der Dateispeicherung einen nicht leeren Wert zurückgeben; andernfalls wird dieses Ereignis nicht ausgelöst, und das nachfolgende uploadComplete-Ereignis kann nicht ausgeführt werden.

uploadComplete(Dateiobjekt)

Wenn eine Datei in der Upload-Warteschlange einen Upload-Zyklus abschließt, egal ob erfolgreich (uoloadSuccess ausgelöst) oder fehlgeschlagen (uploadError ausgelöst), wird das uploadComplete-Ereignis ausgelöst. Dies markiert auch den Abschluss des Uploads einer Datei, und die nächste Datei kann hochgeladen werden.

Wenn Sie möchten, dass die nächste Datei automatisch hochgeladen wird, ist der Aufruf von this.startUpload() an dieser Stelle, um mit dem Hochladen der nächsten Datei zu beginnen, eine gute Wahl. Verwenden Sie ihn jedoch mit Vorsicht. Siehe die Hinweise.

Hinweis:Entspricht dem benutzerdefinierten Ereignis upload_complete_handler in den settings.

Hinweis:Wenn Sie mehrere Dateien hochladen und dabei cancelUpload mittendrin verwenden, um die gerade hochgeladene Datei abzubrechen, oder stopUpload verwenden, um den Upload der Datei zu stoppen, müssen Sie sehr vorsichtig sein, wenn Sie this.startUpload() in uploadComplete verwenden, denn in den oben genannten Fällen werden uploadError und uploadComplete nacheinander ausgeführt. Obwohl der Upload der aktuellen Datei gestoppt wird, wird die nächste Datei daher sofort hochgeladen. Das mag Ihnen seltsam erscheinen, aber tatsächlich ist das Programm nicht falsch. Wenn Sie den automatischen Upload der gesamten Warteschlange beenden möchten, müssen Sie zusätzliche Programmbehandlung durchführen.

debug(message)

Wenn die debug-Einstellung auf true gesetzt ist, wird am unteren Rand der Seite automatisch eine textArea hinzugefügt. Wenn dieses debug-Ereignis nicht überschrieben wurde, rufen sowohl die SWFUpload-Bibliothek als auch Flash dieses Ereignis auf, um Debug-Informationen zum Debuggen in das Ausgabefeld am unteren Rand der Seite einzufügen.

Erinnerung:Entspricht dem benutzerdefinierten Ereignis debug_handler in den settings.

Utility-Objekte SWFUpload Utility-Objekte

Settings-Objekt Settings-Objekt

Es ist eine Variable vom Typ JavaScript Object, die die Konfiguration für die Initialisierung einer SWFUpload-Instanz bereitstellt.Jede Konfigurationseigenschaft darin darf nur einmal vorkommen.Viele Eigenschaften sind optional. Wenn eine optionale Eigenschaft nicht konfiguriert ist, wird der entsprechende in der SWFUpload-Bibliothek angegebene Standardwert verwendet. Einzelheiten finden Sie in der ausführlichen Einführung zu settings.

Zum Beispiel:(Alle Eigenschaften, die in settings konfiguriert werden können)

Beispiel:

{ 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", } }

Ausführliche Beschreibung der Settings-Parameter Settings-Beschreibung

Neue upload_url

Standardwert:Leere Zeichenfolge

Die Einstellung upload_url akzeptiert eine absolute oder eine relative vollständige URL relativ zur SWF-Datei. Es wird empfohlen, einen vollständigen absoluten Pfad zu verwenden, um Anforderungs-Pfadfehler zu vermeiden, die dadurch entstehen, dass Browser und FlashPlayer die Basis-Pfadeinstellung ändern. (yukon: Dies ist tatsächlich relativ. Wenn Ihr swfupload und die PHP-Upload-Dateiverarbeitungsseite immer im selben Website-Ordner liegen, würde ich die Verwendung eines relativen Pfads empfehlen)

Wenn die Eigenschaft preserve_relative_urls des settings-Objekts false ist, konvertiert SWFUpload relative Pfade in absolute Pfade, um zu vermeiden, dass URLs von Flash Player auf verschiedenen Systemen in verschiedene Formate geparst werden. Wenn Sie diese Konvertierung von SWFUpload deaktivieren, sollten Sie einen relativen Pfad verwenden, um den Speicherort von swfupload.swf festzulegen.

Hinweis:Das Sicherheitsdomänenmodell von FlashPlayer muss hier berücksichtigt werden.

file_post_name

Standardwert:Filedata

Mit dem Parameter file_post_name können Sie den Namenswert der hochgeladenen Datei in den POST-Informationen festlegen (ähnlich dem Setzen des name-Attributs von <input type="file" name="Filedata"/> in einem traditionellen Formular).

Hinweis: (Ausstehend in Version 2.5)Diese Parametereinstellung ist unter Linux ungültig; der empfangene Name ist immer Filedata. Um maximale Kompatibilität zu gewährleisten, wird daher empfohlen, den Standardwert für diesen Parameter zu verwenden.

Neue post_params

Standardwert:Leeres Objekt

post_params definiert eine Reihe von Schlüssel/Wert-Paaren, die beim Hochladen jeder Datei zusammen an den Server gesendet werden. Diese Eigenschaft kann mit einem JavaScript-Array-Objekt zugewiesen werden. Schlüssel/Wert-Paare müssen einfache Zeichenketten oder Zahlen sein. (Kann mit der typeof()-Funktion von JavaScript überprüft werden)

Hinweis: Flash Player 8 unterstützt das Mitsenden von POST-Daten nicht. SWFUpload sendet post_params automatisch in Form eines Query-Strings.

use_query_string

Standardwert:false

Diese Eigenschaft kann auf true oder false gesetzt werden und bestimmt, ob post_params per GET gesendet werden. Wenn false, werden sie per POST gesendet. Eingeführt in v2.1.0.

Neu: preserve_relative_urls

Standardwert:false

preserve_relative_urls akzeptiert eine boolesche Variable. Sie gibt an, ob SWFUpload relative URLs in absolute URLs umwandelt. Wenn sie auf true gesetzt wird, werden sie nicht umgewandelt. Der Standardwert ist false, d. h. automatische Umwandlung.

requeue_on_error

Standardwert:false

Diese Eigenschaft kann auf true oder false gesetzt werden. Wenn sie auf true gesetzt wird und ein uploadError bei einem Dateiobjekt auftritt (außer bei fileQueue-Fehlern und FILE_CANCELLED-Fehlern), wird das Dateiobjekt an den Anfang der Upload-Warteschlange wieder eingefügt, anstatt verworfen zu werden. Bei Bedarf kann die erneut in die Warteschlange gestellte Datei erneut hochgeladen werden. Wenn Sie das Dateiobjekt aus der Upload-Warteschlange entfernen möchten, müssen Sie die Methode cancelUpload verwenden.

Alle Ereignisse, die mit einem Upload-Fehler verbunden sind, werden ebenfalls nacheinander ausgelöst. Daher kann das erneute Einreihen einer fehlgeschlagenen Datei mit dem Queue-Plugin (oder benutzerdefiniertem Code, der automatisch die gesamte Dateiwarteschlange hochlädt) in Konflikt geraten. Wenn der Code die Methode startUpload aufruft, um die nächste Datei automatisch hochzuladen, und keine Maßnahmen ergriffen werden, um die fehlgeschlagene Datei aus der Upload-Warteschlange zu entfernen, dann beginnt die erneut in die Warteschlange gestellte Datei, bei der der Upload fehlgeschlagen ist, erneut mit dem Hochladen, schlägt erneut fehl, wird erneut in die Warteschlange gestellt, lädt erneut hoch ... und gerät in eine Endlosschleife.

Diese Einstellung wurde in v2.1.0 eingeführt.

http_success

Standardwert:[]

Dieses Array ermöglicht das Anpassen der HTTP-Statuswerte, die das success-Ereignis auslösen. Status 200 löst immer success aus, und nur Status 200 liefert serverData.

Wenn ein HTTP-Statuswert ungleich 200 akzeptiert wird, muss der Server keinen Inhalt zurückgeben.

Neu: assume_success_timeout

Standardwert: 0

assume_success_timeout legt fest, wie viele Sekunden SWFUpload darauf wartet, eine Serverantwort zu erkennen; bei Zeitüberschreitung wird erzwungen, dass das Upload-Erfolgsereignis (uploadSuccess) ausgelöst wird. Diese Eigenschaft ist dafür gedacht, einen Flash-Player-Bug ordnungsgemäß zu umgehen, lange Wartezeiten auf Serverantworten zu vermeiden und auch den Bug zu beheben, dass Flash Player unter Mac OS den Server nicht dazu bringen kann, Inhalte zurückzugeben.

Flash ignoriert die Serverantwort 30 Sekunden nach dem Auslösen des letzten uploadProgress-Ereignisses und erzwingt das Upload-Erfolgsereignis.

Wenn assume_success_timeout auf 0 gesetzt ist, wird diese Funktion deaktiviert. SWFUpload wartet dann lange darauf, dass Flash Player das uploadSuccess-Ereignis auslöst.

file_types

Standardwert:*.*

Legt die Dateityp-Filterregeln für den Dateiauswahldialog fest. Diese Eigenschaft akzeptiert durch Semikolons getrennte Dateityp-Erweiterungen, zum Beispiel "*.jpg;*.gif", wodurch Benutzer im Dateiauswahldialog nur jpg- und gif-Dateien sehen und auswählen können. Standardmäßig werden alle Dateitypen akzeptiert.

Hinweis:Diese Einstellung ist nur ein Filter für den Client-Browser und hat keine Einschränkungen für die Dateitypfilterung bei der serverseitigen Dateiverarbeitung. Wenn Sie eine strikte Dateifilterung benötigen, muss auch die Serverseite eine programmseitige Erkennung durchführen.

file_types_description

Standardwert:Alle Dateien

Legt die Dateibeschreibung fest, die dem Benutzer im Dateiauswahldialog angezeigt wird.

file_size_limit

Standardwert:0

Legt die Dateigrößen-Filterregeln für den Dateiauswahldialog fest. Diese Eigenschaft akzeptiert einen numerischen Wert mit einer Einheit; verfügbare Einheiten sind B, KB, MB, GB. Wenn die Einheit weggelassen wird, wird standardmäßig KB verwendet. Der spezielle Wert 0 bedeutet keine Dateigrößenbeschränkung.

Hinweis:Diese Einstellung ist nur für den Client-Browser wirksam und hat keine Einschränkungen für die serverseitige Dateiverarbeitung. Wenn Sie eine strikte Dateifilterung benötigen, muss auch die Serverseite eine programmseitige Behandlung durchführen.

file_upload_limit

Standardwert:0

Legt die maximale Anzahl von Dateien fest, die eine SWFUpload-Instanz hochladen darf, und ist zugleich die Obergrenze der Eigenschaft file_queue_limit im Einstellungsobjekt. Sobald der Benutzer erfolgreich Dateien hochgeladen hat oder der Warteschlange Dateien hinzugefügt hat und damit die maximale Anzahl erreicht ist, können keine weiteren Dateien hinzugefügt werden. Der spezielle Wert 0 bedeutet, dass es keine Begrenzung der Anzahl von Uploads gibt. Nur Dateien, die erfolgreich hochgeladen wurden (der Upload hat das Event uploadSuccess ausgelöst), zählen für das Upload-Limit. Die Methode setStats kann verwendet werden, um die Anzahl der erfolgreich hochgeladenen Dateien zu ändern.

Hinweis:Dieser Wert kann nicht seitenübergreifend verwendet werden; er wird auch zurückgesetzt, wenn die Seite neu geladen wird. Strikte Grenzen für die Anzahl der Datei-Uploads sollten vom Server erkannt und verwaltet werden.

file_queue_limit

Standardwert:0

Legt die maximale Grenze für Dateien fest, die in der Datei-Upload-Warteschlange warten. Wenn eine Datei erfolgreich hochgeladen wurde, ein Fehler auftritt oder sie aus der Upload-Warteschlange entfernt wird, können, falls die Anzahl der Dateien in der Warteschlange die Grenze noch nicht erreicht hat, neue Dateien zur Warteschlange hinzugefügt werden, um die Position dieser Datei zu ersetzen. Wenn die maximale Anzahl der zum Hochladen erlaubten Dateien (file_upload_limit) oder die verbleibende Anzahl erlaubter Uploads kleiner als das Datei-Warteschlangenlimit (file_queue_limit) ist, wird der kleinere Wert verwendet.

flash_url

Standardwert:Leere Zeichenfolge

Legt eine vollständige URL fest, entweder absolut oder relativ zu dieser Upload-Seite. Sobald die SWFUpload-Instanz instanziiert wurde, kann diese Einstellung nicht mehr geändert werden.

Hinweis:Tests ergaben, dass die Methode setUploadURL verwendet werden kann, um diese Einstellung zu ändern.

[Neu] flash9_url

(Hinzugefügt in v2.5.0)Flash-Steuerelement (SWF) mit Unterstützung für Flash Player 9. Absolute oder relative URL.

flash_width

(Entfernt in v2.1.0) Definiert die Breite des HTML-Elements, das den Flash enthält. Einige Browser funktionieren nicht korrekt, wenn diese Einstellung kleiner als 1 px ist. Diese Einstellung ist optional und hat einen Standardwert von 1px.

flash_height

(Entfernt in v2.1.0) Definiert die Höhe des HTML-Elements, das den Flash enthält. Einige Browser funktionieren nicht korrekt, wenn diese Einstellung weniger als 1 px beträgt. Diese Einstellung ist optional und hat den Standardwert 1px.

flash_color

(Entfernt in v2.2.0) Diese Einstellung legt die Hintergrundfarbe des HTML-Elements fest, das den Flash enthält. Der Standardwert ist '#FFFFFF'.

Hinweis: Diese Einstellung ist möglicherweise nicht in allen Browsern wirksam, um ein 1px-Flash-Element zu "skinnen".

prevent_swf_caching

Standardwert:true

(Hinzugefügt in v2.2.0)Dieser boolesche Wert legt fest, ob ein Zufallswert an die Flash-URL angehängt werden soll, um zu verhindern, dass der Browser den SWF-Film zwischenspeichert. Dies dient der Behebung eines Fehlers, der in einigen Browsern auf IE-Engine-Basis auftritt.

Hinweis:SWFUpload hängt direkt einen Zufallsparameter namens swfuploadrnd nach flash_url an. Wenn die angegebene flash_url bereits GET-Parameter enthält, erscheinen zwei Fragezeichen als Verkettungszeichen, was einen Fehler verursacht.

debug

Standardwert:false

Dieser Wert ist vom Typ Boolean und legt fest, ob das Debug-Ereignis ausgelöst wird.

Hinweis:SWFUpload-Code vergleicht diese Variable mit dem String "true" unter Verwendung strikter Gleichheit, daher betrachtet er nur true als aktivierten Debug-Modus. Wenn er auf 1 gesetzt wird, obwohl JS ihn als aktiviert ansieht und nach der Initialisierung eine Debug-Konsole erzeugt wird, gibt Flash bei nachfolgenden Operationen keine Debug-Informationen aus. (Da ich es gewohnt bin, 1 und 0 für boolesche Variablen zu verwenden, war ich einst verwirrt, warum Flash-Debug-Informationen nicht ausgegeben werden konnten.)

button_placeholder_id

Standardwert:null

(Hinzugefügt in v2.2.0)Dieser erforderliche Parameter gibt die ID des DOM-Elements auf der Seite an, das swfupload.swf ersetzen wird. Wenn das entsprechende DOM-Element durch das SWF-Element ersetzt wird, wird dem SWF-Container ein Style-Selektor namens "swfupload" für die CSS-Anpassung hinzugefügt.

button_image_url

Standardwert:Leere Zeichenfolge

(Hinzugefügt in v2.2.0)Die größte Änderung in V2.2.0 ist die Einführung eines Buttons in das SWF. Mit diesem Parameter können Sie ein Bild (oder SWF) relativ zur SWF-Datei oder eine absolute Adresse als Button-UI festlegen. Alle von Flash unterstützten Bildtypen können verwendet werden (gif, jpg, png oder ein SWF).

Das Button-Bild muss gemäß bestimmten Regeln verarbeitet werden (CSS Sprite). Das Button-Bild sollte die 4 Zustände des Buttons enthalten, von oben nach unten: Normal, Hover, gedrückt/Klick, deaktiviert. (Siehe das Bild in der offiziellen Demo.)

button_width

Standardwert:1

(Hinzugefügt in v2.2.0)Legt das width-Attribut des SWF fest.

button_height

Standardwert:1

(Hinzugefügt in v2.2.0)Legt das height-Attribut des SWF fest (1/4 der Button-Bildhöhe)

button_text

Standardwert:Leere Zeichenfolge

(Hinzugefügt in v2.2.0)Diese Eigenschaft legt den im Flash-Button angezeigten Text fest und unterstützt HTML. Der Stil des HTML-Textes kann über CSS-Selektoren zusammen mit dem Parameter button_text_style festgelegt werden. Für Details zur Unterstützung von HTML in Flash-Text sieheAdobes Flash-Dokumentation。

button_text_style

Standardwert:"color: #000000; font-size: 16pt;"

(Hinzugefügt in v2.2.0)Dieser Parameter arbeitet mit dem Parameter button_text zusammen, um den Textstil im Flash-Button über CSS-Stile festzulegen. Details zur Flash-Textunterstützung für CSS finden Sie inAdobes Flash-Dokumentation

button_text_top_padding

Standardwert:0

(Hinzugefügt in v2.2.0)Legt den Abstand des Textes auf dem Flash-Button von oben fest. Negative Werte können verwendet werden.

button_text_left_padding

Standardwert:0

(Hinzugefügt in v2.2.0)Legt den Abstand des Textes auf dem Flash-Button von links fest. Negative Werte können verwendet werden.

button_action

Standardwert:SWFUpload.BUTTON_ACTION.SELECT_FILES (Multi-Datei-Upload)

(Hinzugefügt in v2.2.0)Legt die Aktion fest, die nach dem Klick auf den Flash-Button ausgeführt wird. Der Standardwert ist SWFUpload.BUTTON_ACTION.SELECT_FILES; beim Klicken auf den Button wird der Dialog für den Multi-Datei-Upload geöffnet. Wenn auf SWFUpload.BUTTON_ACTION.SELECT_FILE gesetzt, ist es ein Einzeldatei-Upload. Wenn auf SWFUpload.BUTTON_ACTION.START_UPLOAD gesetzt, wird der Datei-Upload gestartet.

button_disabled

Standardwert:false

(Hinzugefügt in v2.2.0)Dieser boolesche Wert legt fest, ob der Flash-Button deaktiviert ist. Wenn deaktiviert, wird beim Klicken keine Operation ausgeführt.

button_cursor

Standardwert:SWFUpload.CURSOR.ARROW (Pfeil-Cursor)

(Hinzugefügt in v2.2.0)Dieser Parameter legt den Cursorzustand fest, wenn die Maus über die Flash-Schaltfläche schwebt. Der Standardwert ist SWFUpload.CURSOR.ARROW; wenn er auf SWFUpload.CURSOR.HAND gesetzt wird, ist es ein Handcursor.

button_window_mode

Standardwert:SWFUpload.WINDOW_MODE.WINDOW

(Hinzugefügt in v2.2.0)Dieser Parameter legt den spezifischen Modus fest, in dem der Browser den SWF-Film anzeigt.

custom_settings

Standardwert:Leeres Objekt

Diese Eigenschaft akzeptiert Daten vom Typ Object und kann verwendet werden, um benutzerdefinierte Informationen, die der SWFUpload-Instanz zugeordnet sind, wie Eigenschaften und Methoden, sicher zu speichern, ohne sich um Konflikte mit den internen Methoden und Eigenschaften von SWFUpload oder um Kompatibilität mit Versionsupgrades sorgen zu müssen.

Nach der Einstellung kann über die customSettings-Eigenschaft der Instanz darauf zugegriffen werden.

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";
Ereignishandler

Standardwert:null

Die übrigen Einstellungen definieren eine Reihe von Event-Handling-Callback-Funktionen. Während des Betriebs von SWFUpload werdenentsprechende Ereignisseausgelöst. Wenn Sie in diesen Callbacks benutzerdefinierte Operationen ausführen möchten, sollten Sie die entsprechenden JavaScript-Funktionen in den Einstellungen definieren.

[Neu] Support-Objekt

Die support-Eigenschaft der SWFUpload-Instanz (ihr Typ ist ein Objekt) kann bestätigen, ob bestimmte Funktionen von SWFUpload von der vom Browser verwendeten Version des Flash Player unterstützt werden.

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

Dateiobjekt

Das File-Objekt enthält eine Reihe verfügbarer Dateieigenschaften. Viele Verarbeitungsereignisse übergeben einen File-Object-Parameter, um auf die relevanten Eigenschaften der Datei zuzugreifen.

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

Statistikobjekt

Dieses Objekt liefert Statusinformationen zur Upload-Warteschlange. Sie erhalten dieses Objekt, indem Sie auf die getStats-Methode der Instanz zugreifen.

Dieses Objekt enthält die folgenden Eigenschaften:

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

Die Werte aller dieser Eigenschaften können mit der setStats-Methode geändert werden, außerin_progressundfiles_queued。

SWFUpload-Plug-ins

Mehrere Plug-ins wurden nach SWFUpload v2.0 eingeführt. Sie helfen SWFUpload, einige Funktionen zu implementieren.

Die Dokumentation für die meisten Plug-ins befindet sich im JS-Plugin-Ordner.

SWFObject

Das SWFObject-Plug-in verwendetSWFObject-Bibliothek, um die SWFUpload-Flash-Komponente in die Seite einzufügen.

Dieses Plug-in bietet außerdem eine Funktion zur Erkennung des Abschlusses des Ladens der Dokumentstruktur (Document Ready Loading). (yukon: diese Funktion könnte wie jQuerys $(document).ready() sein) und eine Flash-Versionserkennung. Die ausführliche Verwendung ist im Ordner dieses Plug-ins dokumentiert. Sie sollten die Document-Ready-Loading-Erkennung von SWFObject besser nicht mit ähnlichen Funktionen anderer Bibliotheken mischen. Verwenden Sie nur eine davon.

Flash Player 10: Da Flash Player 10 eine Schaltfläche benötigt, um zugehörige Vorgänge des Movies auszulösen, wenn diese Schaltfläche (ihre ID kann durch die Eigenschaft button_placeholder_id im settings-Objekt angegeben werden) per CSS oder Ähnlichem auf hidden oder display:none gesetzt wird, schlägt das Laden von SWFUpload fehl.

Cookies

Um den Flash-Cookie-Fehler zu beheben, ruft das Cookies-Plug-in automatisch die Cookies Ihres Browsers ab und sendet sie mit dem Upload. Die Cookies werden mit der Upload-URL in Form von POST oder GET gesendet.

Dieses Plug-in sendet Cookie-Schlüssel/Wert-Paare per POST oder GET. Auf der Serverseite werden sie nicht als Cookies interpretiert. Einige Frameworks, die automatisch Cookies erkennen, um Sitzung und Authentifizierung zu bestätigen, können die von diesem Plug-in übergebenen Werte möglicherweise nicht abrufen.

Warteschlangenverwaltung

Das Queue Handling-Plugin bietet Funktionen zur Warteschlangenverarbeitung. Zum Beispiel das Hochladen der gesamten Warteschlange, das Abbrechen der gesamten Warteschlange und das automatische Starten des Uploads nach dem Einreihen in die Warteschlange.

Geschwindigkeit

Das Speed-Plugin erweitert mehrere Eigenschaften des 'file'-Objekts, um den aktuellen Upload-Status zu beschreiben. Dieses Plugin enthält Werte wie aktuelle Geschwindigkeit, durchschnittliche Geschwindigkeit, verstrichene Zeit und verbleibende Zeit.

Bekannte Probleme

Fehler in Flash Player und vielen Browsern haben SWFUpload geplagt. Aber wir haben hart daran gearbeitet.

Abbrechen unter Linux

Bei Flash 9 Player und früheren Versionen kann das Ausführen eines Upload-Abbruchs unter Linux zum Absturz des Browsers führen. Neuere Versionen von Flash Player haben dieses Problem jedoch verbessert.

Upload-Fortschritt unter Linux

Flash Player unter Linux löst ein Upload-Fortschrittsereignis (uploadProgress) erst nach Abschluss des Uploads aus und nicht kontinuierlich während des Uploads, wie es unter Windows der Fall ist.

Der Grund dafür ist, dass einige Linux-Distributionen den gesamten Browser während des Uploads blockieren.

Upload-Fortschritt unter OS X

Wir haben einige Berichte erhalten, dass Flash Player unter MAC OS das uploadProgress-Ereignis nicht auslöst. Die genauen Umstände sind noch unbekannt, aber bitte seien Sie sich des möglichen Problems bewusst.

MIME-Typ

Unabhängig vom tatsächlichen MIME-Typ der Datei verwendet Flash Player das MIME-Formatapplication/octet-stream, um alle Dateien hochzuladen.

Maximale Anzahl ausgewählter Dateien

Flash Player selbst begrenzt nicht die maximale Anzahl von Dateien, die zum Hochladen ausgewählt werden können, aber er begrenzt die maximale Gesamtlänge der Dateinamen. Diese Zeichenkette setzt sich zusammen aus: "Dateiname" Leerzeichen "Dateiname" ... Die Anzahl der Dateien, die hochgeladen werden können, hängt vom Limit des Betriebssystems für die Gesamtlänge der Dateinamen ab. Wenn der Benutzer zu viele Dateien auswählt, wird im Dateiauswahldialog eine Warnmeldung von Flash Player angezeigt (yukon: Ich habe einmal 173 Dateien auf einmal unter XP hochgeladen, ohne eine Warnung ...).

Proxys

Flash Player funktioniert möglicherweise nicht korrekt mit Proxys. Es gibt einige Probleme bei der Behandlung der Proxy-Authentifizierung, die bestimmte Konflikte verursachen können.

Einige Antivirenprogramme verwenden einen lokalen Client-Proxy, um hochgeladene Dateien zu empfangen und zu scannen (es scheint die hochgeladene Datei abzufangen, auf einen Proxy-Server zu schreiben und erst nach Abschluss des Scans tatsächlich an den Zielserver zu senden). Dadurch glaubt SWFUpload fälschlicherweise, dass die gesamte Datei hochgeladen wurde; es werden zahlreiche uploadProgress-Ereignisse ausgegeben, bis 100% erreicht sind. Während der Proxy tatsächlich zum Zielserver hochlädt, scheint SWFUpload pausiert zu sein.

Kaspersky-Antivirus: Kaspersky(und einige andere Antivirenprogramme) implementieren einen clientseitigen Proxy, um lokal ausgehende Upload-Daten abzufangen. SWFUpload kann die Existenz dieses Proxy-Systems nicht erkennen. Diese Proxy-Server können hochgeladene Dateien sehr schnell empfangen, scannen und dann an den Zielserver senden.

Apache-Sicherheitsmodul Apache mod_security

Apaches Sicherheitsmodul mod_security validiert die vom Server empfangenen POST-Nachrichten. Flash Player implementiert einen Grenzfall (sollte 'an edge case' als '取巧way of' übersetzt werden?) (es gibt einen Parameter, mit dem entschieden werden kann, ob validiert werden soll). POST lädt Dateien hoch, und der Server implementiert dies ebenfalls.

Secure Sockets Layer SSL

Wir haben Berichte erhalten, dass Flash Player nicht über SSL hochladen kann. Die genauen Umstände dieses Problems wurden noch nicht bestätigt, aber es scheint, dass das Hochladen unter SSL unzuverlässig ist. Probleme treten insbesondere bei der Verwendung von selbstsignierten Zertifikaten mit öffentlichem Schlüssel auf.

Ebenso können von nicht vertrauenswürdigen Zertifizierungsstellen (CA) ausgestellte SSL-Zertifikate von Flash nicht akzeptiert werden, da Flash keine Methode bietet, solche Zertifikate zu akzeptieren. Wie beim zuvor erwähnten Cookie-Bug akzeptiert Flash Player unter Windows nur Zertifikate, die von CAs auf seiner Vertrauensliste ausgestellt wurden, unabhängig vom Zertifikat, das der Browser aktuell verwendet.

Authentifizierung

HTTP-Authentifizierungsmechanismen werden von Flash Player nicht gut unterstützt. Neuere Versionen von Flash Player sind etwas besser; ältere Versionen können Browserabstürze verursachen.

Vorzeitig beendete Verbindungen

Ein vorzeitiges Beenden der Antwort (wie z. B. die Response.end()-Methode in ASP.NET) kann dazu führen, dass SWFUpload einen Upload-Fehler meldet, obwohl der Upload tatsächlich abgeschlossen wurde.

Datei-POST-Name: Filedata-POST-Name unter Linux

Das Ändern des Dateiempfangsnamens (Standard "Filedata", festgelegt über die Eigenschaft file_post_name im settings-Objekt) funktioniert nicht in Flash Player unter Linux.

Cookie-Bug

Unter Windows sendet das Flash-Plugin in Nicht-IE-Browsern (FireFox, Opera, Safari usw.) IE-Cookies. Dadurch werden Sitzungs- und Authentifizierungsmechanismen auf vielen Servern gestört.

Entwickler müssen das Problem der Übergabe von Sitzungs- und Authentifizierungs-Cookie-Informationen manuell lösen und außerdem die Sitzung auf dem Server manuell ändern, wenn sie Sitzungen verwenden möchten.

Allerdings bietet das SWFUpload-Paket Beispielcode, um diesen Bug in PHP oder ASP.Net zu beheben.

ExternalInterface-Fehler

Bei der Interaktion mit dem Browser/JS kann Flash Player die escape-Methode nicht korrekt zum Kodieren von Daten verwenden. SWFUpload hat große Anstrengungen unternommen, um dieses Problem zu lösen. Wenn dieser Fehler in Zukunft behoben wird, wird SWFUpload zusätzliche escape-kodierte Daten senden.

Fehler bei der Länge der Serverdaten

Übermäßig lange Serverantwortdaten können unter Flash Player auf MAC- oder Linux-Systemen Fehler verursachen. Daten können abgeschnitten, verändert oder in manchen Fällen dupliziert werden. Wir empfehlen, dass der Server Daten zurücksendet, die so kurz und prägnant wie möglich sind.

Avant Browser

Sobald zwischengespeichert, funktioniert SWFUpload im Avant Browser nicht korrekt.

Seit SWFUpload v2.2.0 wurde die Einstellung prevent_swf_caching hinzugefügt, um zu versuchen, dieses Problem zu lösen.

Dateidialog & Seitenwechsel

Das Verlassen oder Aktualisieren der Seite, während der Dateiauswahldialog geöffnet ist, führt zum Absturz des Browsers. (Bei allen Browsern, allen Betriebssystemen.)

Diese Situation tritt meistens auf, wenn Sie den "onclick"-Wert eines Hyperlinks <a> festlegen, um selectFile/selectFiles aufzurufen, aber seine Standard-Navigationsaktion nicht verhindern. Wenn Sie auf den Link klicken, wird zu einer anderen Seite navigiert und gleichzeitig der Dateiauswahldialog geöffnet.

(yukon: Eine andere Möglichkeit: Das Programm erzwingt eine Seitenaktualisierung oder Weiterleitung. Zum Beispiel eine Aktualisierung in einem HTML-<meta>-Tag, Response.Redirect() von ASP.NET, header() von PHP usw.)

Langlaufende Upload-Skripte

Nachdem Flash eine Datei auf den Webserver hochgeladen hat, wird das Empfangsskript für den Upload ausgeführt. Das Empfangsskript entscheidet, ob die Dateien gespeichert, Miniaturansichten erstellt, Virenscans durchgeführt usw. werden. Wenn das Empfangsskript innerhalb von 30 Sekunden keine Daten zurückgibt, trennt Flash die Verbindung und gibt einen IO-Fehler zurück.

Wenn Sie nicht möchten, dass dies geschieht, lassen Sie den Server während der Verarbeitung ein paar Zeichen oder Daten zurückgeben (falls möglich).

Zum Beispiel bei PHP: Obwohl das PHP-Skript nach dem Trennen von Flash seine Vorgänge erfolgreich abschließen kann, empfängt Flash nach der Trennung keine zurückgegebenen Daten mehr.

Fenstermodus WMODE / BUTTON_WINDOW_MODE

In einigen Browsern verhindert der eingestellte WMODE (konfiguriert durch BUTTON_WINDOW_MODE), dass das Flash-Steuerelement geladen wird, wenn es sich nicht im sichtbaren Bildschirmbereich befindet. Erst wenn Sie scrollen und das Flash-Steuerelement in den sichtbaren Bildschirmbereich bringen, wird es geladen und gerendert.

(yukon: Dies geschieht, damit die Seite so schnell wie möglich gerendert wird. Wenn Sie beispielsweise einen Ordner voller Bilder öffnen, den Ansichtsmodus auf Miniaturansichten einstellen und schnell nach unten scrollen, sehen Sie, wie die Bilddateien darunter nach und nach ihren Inhalt anzeigen.)

Dieses Verhalten kann sich nachteilig auf das SWFObject-Plugin auswirken. SWFUpload-Ereignisse werden möglicherweise nicht ausgelöst, und das Hintergrundbild der Schaltfläche wird möglicherweise erst geladen, wenn das Steuerelement gerendert wurde.

Unter einigen Betriebssystemen (Linux) erscheint der von Flash geöffnete Dateiauswahldialog hinter dem Browserfenster, wenn WMODE auf transparent gesetzt ist.

Speicherlecks

Einige Browser (insbesondere IE) können den Speicher nicht zurückgewinnen, nachdem Flash Player die ExternalInterface-Klasse verwendet hat, um mit JS zu interagieren (zum Beispiel SWFUpload). Wenn zu viele SWFUpload-Instanzen erstellt und die Seite mehrmals aktualisiert wird, belegt der Browser übermäßig viel Speicher, was wiederum zu Browserabstürzen oder anderen Systemfehlern führt.

In SWFUpload v2.2.0 haben wir einige Mechanismen implementiert, um Speicherlecks zu verhindern. Es wird jedoch weiterhin empfohlen, beim Schließen der Seite die Methode destroy() aufzurufen. Wenn Sie Hunderte von SWFUpload-Instanzen auf einer einzigen Seite verwenden, müssen Sie sorgfältig testen, um Speicherlecks zu verhindern.

Einige Probleme im Zusammenhang mit Mac OS — Weitere Mac-Probleme

  • Die von dem Server oder Flash Player auf Mac-Systemen zurückgegebenen Daten lösen möglicherweise nicht das uploadSuccess-Ereignis aus. Wir haben die Einstellung assume_success_timeout hinzugefügt, um dieses Problem zu beheben. Im Allgemeinen ist es jedoch sehr einfach und zuverlässig, nach einem erfolgreichen Empfang ein kurzes Feld zurückzugeben.
  • Einige Benutzer haben Probleme beim Hochladen an Adressen mit einer Subdomain auf Mac-Systemen gemeldet.
  • Einige Benutzer haben berichtet, dass Weiterleitungen (HTTP-Statuscode 302) vom Mac Flash Player nicht gut verarbeitet werden. Unter Windows scheint es dieses Problem nicht zu geben. 302-Weiterleitungen werden häufig in einigen Autorisierungsmodi und MVC-Designframeworks verwendet.
  • Die Flash-Entwicklungsdokumentation besagt, dass auf Systemen vor OS X 10.3 die geladenen Bytes immer -1 sind. SWFUpload ändert dies in 0, aber die Gesamtbytes werden nicht gesendet, und der Fortschritt wird nie 100% erreichen. Bitte aktualisieren Sie daher die UI, sodass 100% angezeigt werden, wenn der Upload abgeschlossen ist und das uploadSuccess- oder uploadComplete-Ereignis ausgelöst wird. Dadurch bleibt die UI auf allen Systemen konsistent.
  • Einige Benutzer haben berichtet, dass der Mac Flash Player Probleme hat, wenn der Upload-Pfad Leerzeichen enthält. Bitte ersetzen Sie sie durch + oder %20.
  • Einige Benutzer haben berichtet, dass der Mac Flash Player die Portnummer zum HTTP-HOST-Header hinzufügt (zum Beispiel http://www.example.com:80). Wenn Sie diesen Parameter prüfen, achten Sie darauf, dieses Problem zu behandeln.
  • Wenn eine Datei nur einen Resource-Fork enthält, wird sie vom Flash Player als 0-Byte-Datei behandelt und kann nicht hochgeladen werden (Hinweis: Flash Player 10.1 hat dieses Problem möglicherweise behoben).