Bilderupload - Script zu langsam?

  • Hallo,

    ich bin dabei mir ein Bilder-Uploader mit Vorschau und Sortierfunktion zu bauen. Mehr oder weniger klappt das schon ganz gut, doch ein großes Problem nervt mich - offenbar wenn die Dateigröße zu hoch ist: wähle ich mehrere Bilder von der Festplatte aus und treffe die Auswahl zu schnell, werden die Bilder nicht in der richtigen Reihenfolge angezeigt, sondern vermutlich danach sortiert, wie sie geladen werden.

    Gucke HIER

    HIER habe ich mal ein paar Fotos hochgeladen, mit denen es nicht klappt.

  • Ist doch ganz logisch. Gib jedem Bild eine ID, lasse alle vollständig laden, und zeige sie erst dann an. Ansonsten versuche dsa Problem etwas genauer zu beschreiben. Wo hast Du schwierigkeiten?

  • Also ich wähle die Bilder aus - A-B-C-D-E, angezeigt werden sie aber durcheinander. Beim hochladen sind sie aber wieder in der richtigen Reihenfolge.

    ID's bekommen die Bilder schon, aber wie kann ich sie vollständig laden, bevor sie angezeigt werden?

  • Kannst du uns bitte den Codeteil zeigen?

    Ups, völlig vergessen.

  • Hey,


    du musst deinen Bilder eine eindeutige Erkennungsnummer geben. Mit dieser kannst du dann die Bilder vor der Ausgabe sortieren und in der richtigen Reihenfolge ausgegeben.


    Grüße,

    Stef

  • Hört sich soweit logisch an. Ich habe jetzt noch nicht weiter daran rumprobiert, aber ich bezweifle, dass das wirklich funktioniert. Bei einem Test sind die Thumbnails wieder durcheinander, der Quellcode ist aber richtig geordnet.

  • Der Grund für das Verhalten ist, dass der Filereader für die Erzeugung der Vorschaubilder asynchron arbeitet, dadurch kann die Reihenfolge verfälscht werden. Dieses sollte das Problem lösen:

  • Super, dass funktioniert. Allerdings habe ich nun ein recht merkwürdiges, neues Problem im Zusammenhang mit der Sortierung.

    Wenn ich die Bilder vor dem Upload neu sortiere scheint vom PHP-Script alles richtig zu laufen. Dennoch werden die hochgeladenen Dateien falsch benannt. Das gab es mit dem alten Script nicht. Allerdings erkenne ich auch keinen Zusammenhang, Da die Übergabe der Sortierung scheinbar richtig erfolgt.

    Ich weiß leider gerade nicht, wie ich ein Beispiel hochladen könnte. Zumindest aber den Code:


    Hier habe ich nur die Sortier-Funktion mit eingefügt, sonst nichts geändert.

  • Werde es mir mal ansehen. Welches Sortable ist das, das von jQuery-UI?

    Ja, genau das.


    Aber das merkwürdige ist, bis hierher scheint alles zu stimmen. Das ist die Ausgabe vom PHP-Script:

    Code
    oldName:./upload/bla/tmp/blaa.jpg = newName:./upload/bla/tmp/tmp_blae.jpg
    oldName:./upload/bla/tmp/blab.jpg = newName:./upload/bla/tmp/tmp_blab.jpg
    oldName:./upload/bla/tmp/blac.jpg = newName:./upload/bla/tmp/tmp_blac.jpg
    oldName:./upload/bla/tmp/blad.jpg = newName:./upload/bla/tmp/tmp_blad.jpg
    oldName:./upload/bla/tmp/blae.jpg = newName:./upload/bla/tmp/tmp_blaa.jpg

    und gleich in der nächsten Zeile erfolgt der Upload, aber der klappt dann nicht mehr. Für mich sehe ich da eigentlich keinen Zusammenhang mit Deinem Scirpt...

  • Da habe ich eine Weile gebraucht, um durchzusteigen, aber ich hoffe, dass ich jetzt eine Lösung habe, indem ich das Verfahren mit der Sortierung überarbeitet habe: Die Listenelemente bekommen einen Index als ID. Entsprechend wird dann aus dem Array der tmp-Dateien die richtige ausgewählt und verschoben. Ich habe es nicht sehr intensiv getestet, aber ich hoffe, dass es funktioniert:


  • Super, jetzt geht es. Nu muss ich nur noch rausfinden, warum :), aber das bekomme ich hin.

    DANKE! :)

    Da habe ich eine Weile gebraucht, um durchzusteigen,

    Ja, dass höre ich öfters. Hab wohl eine ganz spezielle (unlogische) Art zu scripten. Meistens räume ich dann ganz zum Schluss immer noch mal kräftig auf.

  • Winzig kleiner Nachtrag, falls jemand das Script übernehmen will. In Zeile 28 muss es heißen:

    Code
    if (isset($sortArray[1])) {

    da das Array nie wirklich leer ist.

  • noch mal kurz ne Frage. Was soll in Zeile 12 ($sortArray = explode(",", $_POST['newsort'] ?? "");) das Ende (?? "") bedeuten? Hab das erst nicht weiter beachtet, da es lokal funktioniert hat, aber auf dem Server gibt es eine Fehlermeldung aus.

  • Zu dem Script in #14 habe ich jetzt doch noch mal eine Frage. Und zwar will ich eine Möglichkeit anbieten, dass einzelne Bilder aus der angezeigten Liste auch wieder gelöscht werden. Eigentlich sollte das doch gar nicht so schwer sein. Dass sie optisch entfernt werden, klappt wunderbar, hochgeladen werden sie dann - natürlich - dennoch. Wie kann ich nun also aus f die entsprechenden Einträge löschen? Bei einem Array wäre das ja gar kein Problem, doch offenbar ist f kein Array.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!