Erfolgt das Hochladen mehrerer Dateien in der gleichen Reihenfolge, in der wir die Bilder auswählen?

8

Ich verwende die HTML5-Mehrfach-Upload-Funktion.

%Vor%

es funktioniert perfekt. Jetzt habe ich eine Abfrage

Befolgen Sie beim Hochladen mehrerer Bilder beim Hochladen von Bildern eine beliebige Reihenfolge?

Angenommen, ich habe 5 Bilder

%Vor%

jetzt beim Hochladen von Bildern, wenn ich Bilder in unterer Reihenfolge auswähle

%Vor%

Werden diese Bilder in der von mir ausgewählten Reihenfolge hochgeladen?

bedeutet $_FILES['upload']['name'] array hat (mit PHP )

%Vor%

oder hängt es von Dateigröße oder Browser oder einem anderen Faktor / Attribut ab?

Nebennote

Außerdem speichere ich diese Bilder einzeln in profile_image_table

%Vor%

Die Antwort auf die obige Frage erleichtert meine Arbeit, denn wenn Sie mehrere Bilder in der von uns ausgewählten Reihenfolge hochladen, wäre es einfacher, ein Bild für das Hauptprofilbild ( MIN(id) oder MAX(id) ) des angegebenen profile_id zu wählen. .

    
diEcho 24.08.2012, 11:23
quelle

2 Antworten

3

HTML5 hat nichts mit Datei-Uploads zu tun, wo der Server betroffen ist. Zeitraum. Es gibt keine zuverlässige "Bestellung". Wie die Kommentare angemerkt haben, kann die tatsächliche Reihenfolge, die sich aus den neuen HTML5 multiple -Feldern ergibt, von Browser zu Browser variieren. Um zu verstehen, warum, müssen wir uns ansehen, was passiert, wenn ein User-Agent (Browser) ein Formular mit mehreren Dateifeldern an einen PHP-Server sendet.

Wenn Sie mehrere Dateien von einem HTML-Formular hochladen, macht Ihr Browser automatisch einige Dinge für Sie:

  1. Senden eines Content-Type: multipart/form-data -Headers, um den entfernten HTTP-Server zu informieren, dass er im Rahmen dieser einzelnen Anfrage mehrere diskrete "Blöcke" von Informationen sendet.
  2. Erstellen einer unformatierten HTTP-Nachricht, die der HTTP-Spezifikation entspricht, um Ihre Dateien mit dem HTTP-Protokoll zu transportieren.

Die rohe HTTP-Nachricht sieht ungefähr so ​​aus:

%Vor%

Es hängt vollständig vom Browser ab, in welcher Reihenfolge er die Daten von Ihrem Formular ablegt. User-Agent-Sniffing ist nicht wirklich eine praktikable Option, um die Reihenfolge zu bestimmen. Wenn die Reihenfolge der Felder so wichtig ist (sinnlose Idee, aber was auch immer), sollten Sie stattdessen ein Formular verwenden, in dem es eine endliche Anzahl möglicher Dateifelder gibt, und diese einzeln benennen. Auf diese Weise können Sie auf die Dateien über ihre Feldnamen im Array $_FILES zugreifen. Schließlich müssen Sie das neue HTML5-Feature nicht verwenden, nur weil es existiert:

%Vor%

Und in Ihrer PHP-Datei greifen Sie direkt auf die Felder mit ihren Namen zu. Sie wissen, welcher Name des Formularfelds zuerst angegeben wurde, weil Sie den HTML-Code so codiert haben:

%Vor%

Vielleicht wäre eine bessere Lösung in Ihrem Fall einfach ein Dateifeld zu haben, das direkt benannt wird (so dass Sie immer wissen, dass es das primäre Feld ist) und dann das Mehrfachauswahlfeld für Benutzer hinzuzufügen, um weitere Dateien hinzuzufügen.

    
rdlowrey 25.08.2012, 05:09
quelle
2

Einfach ausgedrückt, nein, es kommt auf den Browser und den Server und die Reihenfolge an, in der sie es tun wollen.

Damit eine Datei von einer Webseite zu PHP gelangt, sind drei Schritte erforderlich.

  1. Browser nimmt die Dateien und legt sie schön in einen Post an den Apache (oder andere) und dann überträgt es alles.

  2. Der Browser wird die eingehenden Daten sehen, behält die Header, einige von ihnen werden an PHP übergeben, aber nicht alle und für die Dateien schreibt er sie nach / tmp und sendet dann die Info wo sie sind zu PHP lokalisiert.

In den oben genannten Fällen kann sich die Reihenfolge ändern. Technisch gesehen sollten sie in der gleichen Reihenfolge laufen, aber kein Muss. Im Falle von Bulk-Uploads über Flash oder einer anderen Multi-Auswahl-Option gehen sie in umgekehrter Reihenfolge, wissen aber nicht, was einige Dateien aus ihrer Reihenfolge herausgenommen und als erste oder letzte platziert haben.

Der beste Weg, um sicherzustellen, dass sie in der gleichen Reihenfolge ausgeführt werden, besteht darin, unterschiedliche Namen für alle Dateifelder anstelle eines Arrays zu verwenden.

    
transilvlad 01.09.2012 22:55
quelle

Tags und Links