Problemumgehungen für die Safari HTML5 multiple file upload bug?
Nach Wochen zwicken, schließlich gab ich auf. Ich konnte einfach nicht fix meine multiple Datei-upload in safari, die wirklich störte mich, weil mein code funktionierte perfekt, wie sollte es auch auf anderen Browsern, außer safari. Dann habe ich erst vor kurzem entdeckt, dass es nicht mein code, der das problem hat. Seine ein Safari-bug. Safari 5.1.+ nicht Lesen können, der html5-multiple-Attribut (oder so ähnlich). So können Nutzer nicht verwenden, die mehrere upload-Funktion, SONDERN, richtig, eine einzelne Datei hochzuladen.
paar links, die das Thema diskutieren:
https://github.com/moxiecode/plupload/issues/363
Datei-Eingabe-Größe-Problem in safari für mehrere Datei-Auswahl
Es scheint, dass dieser bug ist schon seit geraumer Zeit. Also ich Frage mich, ob es gibt Möglichkeiten, für diese verfügbar im moment, dass einige von Euch vielleicht bewusst ist? Weil ich finde keine. Die einzige Möglichkeit, die ich gefunden ist, um NICHT von mehreren Attribut für Safari 5.1.+ Benutzer. Habt Ihr irgendwelche besseren Ideen?
UPDATE
Safari 5.1.7 ist die Letzte version, die Apple für das Windows-Betriebssystem. Sie wusste nicht mehr weiter zu bauen, die aktuellen Versionen von Safari für Windows. Suche nach einem fix für diesen Fehler ist für mich nicht nötig, da Real Safari-Benutzer werden aktualisiert, um die neueste version des Browsers(keine Fakten), und ein separater upload für diejenigen, die noch mit dieser veralteten version, um nicht Opfer der modernen features Ihre Anwendung.
- Ich habe bei meinem fileupload zu
sequentialUploads: true
und ich hatte keine Probleme mehr
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist ältlich Frage, aber ... hack-Typ workaround ist unten.
Entfernen Sie einfach mehrere Attribut für Safari, turnig es in MSIE<=9 kleiner Bruder (nicht-XHR).
Rest der Browser nicht betroffen.
Wenn Safari schließlich löst das problem, alle Sie tun müssen ist, entfernen Sie diesen hack:: - code und gehen Sie zurück zum standard-code-Eingabe.
hier ist die standard-Eingabe Beispiel:
jQuery Lösung:
Einfach irgendwo auf eine Seite, wo Sie die Dateien input-tag.
Lesen Sie hier mehr: Wie zu erkennen, Safari, Chrome, IE, Firefox und Opera-browser?
PHP-Lösung
müssen Sie einige code-id-browser habe ich eine Klasse habe ich einen in github (MIT)
Holen Sie es hier: https://github.com/gavroche/php-browser
Das ist alles.
Es scheint, dass es ein weiteres Problem kann sein, herumalbern. iOS-Safari hochladen von mehreren Dateien verwenden Sie immer den Namen "image.jpg" für alle hochgeladenen Dateien. Es mag nur eine Datei hochgeladen in der server-Seite, aber das ist nicht das, was passiert ist: es hochgeladen wurde, alle Dateien mit dem gleichen Namen!
So, der workaround kommt in die server-Seite: ändern Sie einfach die Ziel-Dateinamen mit einem neuen generierten Namen.
Ich arbeite mit Flask und Python, also ich benutze die standard-Formel.
Wo
generate_filaname
hat eine Funktion, die erstellt eine neue Datei mit der gleichen Endung wie das original. Zum Beispiel:Dasselbe kann man in PHP natürlich.
Lief ich in die image.jpg problem mit asp.net. Es könnte von Vorteil sein jemanden. Ich war von dem Anhängen eines nicht-eindeutigen hash zu jedem Bild-Datei zu binden, um den Datensatz in der db. Funktioniert auf jeder Plattform (unsere Nutzer verwenden sowieso), außer bei der Verwendung von Safari. Habe ich angehängt, ein hash und ein einzigartiges drei-stellige Zeichenfolge, die ich zog aus der Sekunden Teil des DateTime-string:
Kann einen besseren Weg, aber wir haben nur eine kleine Anzahl von Menschen, die das hochladen von ein - zwei, vielleicht drei Bilder pro Datensatz in der Datenbank. Sollte funktionieren.