Blueimp File Upload Plugin lädt nur einmal hoch

8

Ich habe dieses seltsame Problem und ich habe mehrere Lösungen ausprobiert (sogar die Implementierung der gleichen wie die Basic Plus-Demo auf ihrer Website). Ich kann Dateien einfach, einzeln oder mehrfach hochladen. Sie laden auf einen Klick auf den einzelnen Artikel oder einen "Alle hochladen" -Button. Das Problem besteht darin, vor oder nach dem Hochladen weitere Dateien hinzuzufügen. Das Plugin zum Hochladen von Dateien erkennt nicht einmal, dass sich diese Dateien in der Dateieingabe ändern. Daher wird das Ereignis "fileuploadadd" nie ausgelöst und ich muss die Seite aktualisieren, um weitere Dateien hochladen zu können. Ich frage mich, ob das Fileupload Change Event irgendwo verloren geht, aber ich kann nicht für das Leben von mir herausfinden, wo.

Benötigt das Plugin zum Hochladen von Blueimp-Dateien auch ein bestimmtes Rückgabeformat von JSON? Im Moment gebe ich nur "{\"status\":\"success\"} zurück, wenn die Uploads erfolgreich verlaufen sind, und eine ähnliche Fehlermeldung. BEARBEITEN: Das Ändern des Antwortformats auf Beispiele, die von blueimp gezeigt werden, hatte keine Auswirkung.

Hier ist ein Code für den Uploader, den ich verwende. Beachten Sie, dass ich derzeit ASP.NET und jQuery 2.0.3 sowie jQuery UI 1.9.2 verwende.

%Vor%     
MightyLampshade 12.05.2014, 16:13
quelle

2 Antworten

14

Nun, nach einer Nacht Schlaf und mehr darüber nachdenken, habe ich diese Option

angegeben %Vor%

während der Dateiupload-Initialisierung. Und raten Sie mal, es funktioniert jetzt wie beabsichtigt. Ich vermute, dass die Dateieingabe verloren gegangen ist, weil das Fileupload das Steuerelement nach einem Upload oder einer Änderung standardmäßig klont.

Vielen Dank für jede Überlegung, die jemand mir vielleicht gegeben hat, ich hoffe, dass es für jemand anderen in der Zukunft nützlich ist.

    
MightyLampshade 13.05.2014, 08:20
quelle
3

Seit der ursprünglichen Antwort sind zwei Jahre vergangen, aber ich habe das für meinen eigenen Fall herausgefunden (:

Wenn Sie replaceFileInput: false verwenden, funktioniert der Code nicht in IE9, das die neueren Datei-Upload-APIs nicht unterstützt. Gemäß der Dokumentation hängt die Fallback-Unterstützung für diesen Browser von einem "Iframe-Transport" ab, bei dem das Dateieingabeelement jedes Mal ersetzt werden muss. Das Lesen war der große Hinweis für mich.

Was dich wirklich umbringt, ist folgendes:

%Vor%

Sie gehen davon aus, dass upload_file immer noch dasselbe Element ist, aber durch einen Klon ersetzt wurde. Sie feuern ein Klickereignis auf das alte Dateieingabeelement. Es existiert, also erhalten Sie den System-Browse-Dialog, aber es ist nicht an irgendwelche Rohrleitungen angeschlossen.

Die richtige Lösung mit voller IE9-Unterstützung ist also die Verwendung von "find", um upload_file jedes Mal neu zu lokalisieren, wenn dieser Klick-Handler ausgelöst wird. Du hast deinen Code zum Einstellen von upload_file nicht angegeben, daher weiß ich nicht, wie der richtige Selektor in deinem Fall aussehen würde, aber er würde ungefähr so ​​aussehen:

%Vor%     
Tom Boutell 25.05.2016 13:48
quelle