WBCE CMS – Way Better Content Editing.
Du bist nicht angemeldet.
Habe ein Problem beim Upload von Fotos.
Bei meinem Formular können 2 Fotos hochgeladen werden.
Ich habe ein Größenbeschränkung von 5MB reingegeben.
Ich lade nun 2 Fotos hoch. Das erste ist kleiner als 5MB, das zweite ist größer asl 5MB. Es kommt nun ein Fehler beim Foto 2. Das ist auch richtig so.
Allerdings wird das Foto 1 schon hochgeladen.
Jetzt tausche ich das Foto 2 gegen ein kleineres aus und bestätige nochmals mit OK.
Nun passt alles. Das Foto 2 wird hochgeladen, allerding werden die Infos von Foto 1 nicht in die Datenbank geschrieben. Da dürfte es einen Fehler geben.
Oder mache ich etwas falsch?
lg
Hansi
Offline
Hallo Hansi,
ja, ich glaub ich beginn das Problem zu verstehen: Der Upload wird abgebrochen, wenn das Limit für die Gesamtgröße erreicht ist. Zu dem Zeitpunkt ist das erste Bild aber schon hochgeladen. Bist du sicher dass die erste Datei beim zweiten Versuch noch mit selektiert war?
Wenn ja, dann müsste der Upload eigentlich auch mit in die Datenbank geschrieben werden.
Wenn nein, dann ist aber vom ersten Versuch noch der Upload vorhanden.
Das wäre an sich vielleicht nicht so tragisch, wenn einzelne Dateien vom zulässigen Typ und kleiner als die Maximalgröße vorhanden sind. Wenn die Datei beim zweiten Versuch mit ausgewählt ist und trotzdem nicht in die DB geschrieben wird. Wenn die Datei mit ausgewählt war und trotzdem nicht geschrieben wird, dann muss ich noch mal weiter forschen warum.
Offline
Hallo!
So habe jetzt nochmals getestet. Hier der Ablauf
Ich möchte gerne mit mpforms Einträge erstellen und 2 Fotos hochladen. Die Größe habe ich auf 5 MB beschränkt.
Foto 1 : 4 MB (Foto1.jpg)
Foto 2: 6 MB (Foto2.jpg)
Wenn ich nun auf Absenden klicke, passiert folgendes:
Fehlermeldung: "Fehler beim Hochladen der Datei: Foto2.jpg (Datei ist zu groß, ....)"
Upload: Foto1.jpg wurde allerdings schon hochgeladen und liegt im richtigen Verzeichnis
Datenbank: noch kein Eintrag in der Datenbank erstellt
Nun ändere ich das Foto ab auf Foto3.jpg (kleiner als 5MB).
Foto1.jpg wird nicht geändert.
Nun passiert folgendes:
Zusammenfassung: Es erscheint die Übersicht der Einträge. Dabei sieht man, daß Foto1.jpg und Foto3.jpg angegeben sind.
Upload: Foto1.jpg und Foto3.jpg wurden hochgeladen und liegt im richtigen Verzeichnis
Datenbank: Eintrag in DB erstellt. Allerdings fehlt der Eintrag für Foto1.jpg
Hoffe die Analyse passt
lg
Hansi
Offline
Beiträge vom Ursprungsthread zwecks Übersichtlichkeit abgetrennt
Code allein macht nicht glücklich. Jetzt spenden!
Offline
Ok, danke für die Analyse. Dann muss ich mir das doch nochmal genauer anschauen.
Offline
Hallo Hansi,
der Fehler mit dem Größenlimit war etwas irreführend. Ich habe jetzt gefunden woran es lag, dass das erste Foto nicht in der Datenbank (und zwar in der Results-Tabelle) aufgetaucht ist.
Bei der Erweiterung, dass man mit einem Uploadfeld mehrere Dateien auswählen kann, habe ich die dafür zuständige Variable einfach vergessen anzupassen. Bei der Email an den Benutzer, bei der Email an den Site-Betreiber, bei den auf der Webseite angezeigten Daten und in der Submissions-Tabelle wurden mehrere Dateien berücksichtigt, aber beim Eintrag in der Results-Tabelle wurde schlicht und einfach immer der letzte Pfad, der verarbeitet wurde genommen (ganz unabhängig davon, ob dies im ersten Versuch geklappt hat oder davor schon ein Fehler beim Upload aufgetreten ist). Hat man nur eine Datei ausgewählt, war alles gut. Nur beim Upload von mehreren Dateien gab es das Problem und nur bei dem Wert, der für das Upload-Feld in die Results-Tabelle geschrieben wird.
Das ist in Version 1.3.25 jetzt korrigiert. Werden mehrere Dateien hochgeladen, werden hier jetzt auch die Pfade für alle Dateien durch Komma getrennt in das Tabellenfeld für den Uploadpfad eingetragen.
Übrigens das Größenlimit gilt für die Summe aller hochgeladenen Daten. Sind dort 5MB eingestellt, dann kann man z.B. 1 Bild mit 5MB oder 5 Bilder mit 1 MB hochladen. Wenn häufiger mehrere große Bilder übertragen werden sollen, dann solltest du den Wert höher setzen. Wäre es ein Limit pro Datei, dann könnte man ja relativ schnell den Plattenplatz auf dem Server vollschreiben indem man einfach viele Dateien in der maximal zulässigen Größe überträgt. Wenn man natürlich viel mit Uploads arbeitet und entsprechend auch Speicherplatz vorhält, dann muss man eben diese Werte an den eingenen Use-Case anpassen.
Es gibt noch ein weiteres Limit für die Anzahl: Mehr als 128 Dateien auf einmal geht auch nicht - sonst könnte man Millionen von leeren Dateien übertragen und so über die Anzahl der Dateien in einem Verzeichnis das Dateisystem auf dem Server an seine Grenzen treiben. Das ist momentan ein hart condierter Wert - es wäre aber auch kein Problem den noch etwas hoch zu setzen oder auch noch über die Einstellungen anpassbar zu machen.
Viele Grüße,
Martin
Offline
Hallo Martin.
Danke, habe die neue Version heruntergeladen und getestet.
Gleiches Szanario.
Foto1: kleiner als 5MB
Foto2: größer als 5BM
Foto3: kleiner als 5MB
Foto4: kleiner als 5MB
Nach dem Klick auf "OK" erscheint die Fehlermeldung, dass das Foto2 zu groß ist.
--> kein DB-Eintrag vorhanden (OK)
--> Foto1, Foto3, Foto4 schon hochgeladen
Ich ändere das Foto, dass es kleiner als 5MB ist und klicke wieder auf "OK"
OK-Meldung erscheint.
--> DB-Eintrag teilweise vorhanden (ERROR)
--> Foto1, Foto2, Foto3, Foto4 sind hochgeladen (OK)
--> Function "after upload" wurde ausgeführt (OK)
Nun ist noch ein Fehler in der Datenbank. Nach dem erneuten Hochladen ist nur der Lnk von "Foto2" (das geändert wurde) in der Datenbank.
Die Links von Foto1, Foto3, Foto4 sind nicht geschrieben worden.
Größenlimit: das kann ich für die Gesamtheit nicht nachvollziehen. Meine Fotos hatten alle über 3 MB und das wären dann gesamt 12 MB bei einer Beschränkung von 5 MB
lg
hansi
Offline
Hallo Hansi,
vielleicht reden wir da aneinander vorbei. Du wählst schon mehrere Fotos mit einem Upload-Element hoch? Oder hast du pro Foto ein separates Feld im Formular?
Und mit "DB-Eintrag" meinst du die Results-Tabelle, richtig?
Und beim zweiten Anlauf mit dem verkleinerten Foto sind auch wieder alle 4 ausgewählt gewesen und trotzdem nur der Pfad zu Foto2 in die Results-Tabelle geschrieben worden, auch mit Version 1.3.25 noch?
Offline
Hallo Martin!
Ja wir reden aneinander vorbei.
Ich habe für jedes Foto ein eigenes Upload-Feld definiert.
Und dabei hab ich das Problem.
Hab noch gar nicht gemerkt, dass man mehrere Dateien auswählen kann
Na egal, das ist jetzt schon zu spät.
Das wäre ein Vorschlag für eine nächste Version: Auswahl ob man mehrere oder nur eine Datei hochladen kann.
Was mir noch aufgefallen ist, sind die akzeptierten Dateitypen: hier wird zw. Groß- und Kleinschreibung unterschieden!
lg
Hansi
PS: Nochmals ein großes Lob für dieses Modul!!!!
Beitrag geändert von hansis100 (22.01.2019 11:57:25)
Offline
Hallo Hansi,
ah, ok, dann wirkt das Größenlimit auf jedes Feld. Wenn in jedem Feld genau eine Datei übertragen wird, dann darf die eben das Limit nicht überschreiten. Bei 4 Feldern kann also in Summe 4x das Limit übertragen werden, in 4 Dateien, die jeweils knapp unter dem Limit sind oder in 8 Dateien, die jeweils knapp die Hälfte des Limits ausschöpfen und jeweils 2 in einem Feld hochgeladen werden usw.
Was in dem Fall mit mehreren Feldern jetzt mit dem Datenbankeintrag schief geht, muss ich nochmal testen. Vielleicht spielt da jetzt die Fehlermeldung mit dem Überschreiten des Größenlimits doch eine Rolle.
Die Auswahl, ob man eine oder mehrere Dateien auswählen kann bedeutet wahrscheinlich intern einen ziemlichen Umbau. Ich weiß noch, als ich in 1.1.12 eingeführt habe, dass Mehrfachauswahl möglich ist, war das nicht ganz trivial. Was eben für eine Datei eine Variable war, wurde plötzlich zu Listen, über die man iterieren muss, um die Dateien serverseitig entgegenzunehmen. Macht man das jetzt konfigurierbar, dann braucht man auch die ältere Code-Variante wieder. Aber mal schauen... mir fällt gerade ein Trick ein, wie man vielleicht beide Fälle erschlägt, indem man das Datenformat vor der Verarbeitung umwandelt.
Zu den Dateinamen: Groß- und Kleinschreibung wird auf im Serverbereich weit verbreiteten Unix-/Linuxsystemen unterschrieden. Das hat schon seine Richtigkeit, dass Datei.JPG und Datei.jpg zwei verschiedene Dateien sind. Die können unter Linux auch im gleichen Verzeichnis liegen. Weiterverarbeitende Skripte müssten die Dateitypen dann separat mit *.jpg *.JPG auflisten, oder noch besser, um alle Groß- und Kleinschreibungen mit zu berücksichtigen *.[jJ][pP][gG] oder um auch *.jpeg usw. zu erfassen: *.[jJ][pP]?([eE])[gG]. Oft wird aber eher schlampig nur nach der Variante in Kleinbuchstaben und vielleicht noch nach dem großgeschriebenen Pendant gesucht.
Von daher ist es gut, dass schon beim Upload angegeben werden kann, welche der denkbaren Varianten überhaupt zulässig sind.
Ach ja, und mit Datenbankeintrag meinst du die Results-Tabelle, richtig? (nur um sicher zu gehen, dass wir da nicht auch aneinander vorbei reden)
viele Grüße,
Martin
Offline
Ich kann das Problem auch mit mehreren Upload-Feldern reproduzieren. In dem Fall wird ja über ein Feld eine Datei schon im ersten Anlauf hochgeladen, die andere erst nachdem man sie verkleinert hat. Erst beim zweiten Anlauf wird der Datenbank-Eintrag in die Results-Tabelle geschrieben. Die bereits hochgeladene Datei wird aber beim zweiten Versuch als bereits hochgeladen angezeigt. Beide werden in die Submissions-Tabelle eingetragen, aber nur die, die im letzten Anlauf hochgeladen werden. Ja... das muss ich noch gerade ziehen...
Offline
Hallo Hansi,
kannst du bitte die angehängte Vorabversion nochmal testen?
viele Grüße,
Martin
Offline
Hallo Martin!
Habe es getestet.
Es funktioniert wunderbar.
Danke
Hansi
Offline
Hallo Hansi,
ah, ok, dann wirkt das Größenlimit auf jedes Feld. Wenn in jedem Feld genau eine Datei übertragen wird, dann darf die eben das Limit nicht überschreiten. Bei 4 Feldern kann also in Summe 4x das Limit übertragen werden, in 4 Dateien, die jeweils knapp unter dem Limit sind oder in 8 Dateien, die jeweils knapp die Hälfte des Limits ausschöpfen und jeweils 2 in einem Feld hochgeladen werden usw.
OK, das ist mir nun klar geworden.
Was in dem Fall mit mehreren Feldern jetzt mit dem Datenbankeintrag schief geht, muss ich nochmal testen. Vielleicht spielt da jetzt die Fehlermeldung mit dem Überschreiten des Größenlimits doch eine Rolle.
Mit der neuen Version funktioniert es nun.
Die Auswahl, ob man eine oder mehrere Dateien auswählen kann bedeutet wahrscheinlich intern einen ziemlichen Umbau. Ich weiß noch, als ich in 1.1.12 eingeführt habe, dass Mehrfachauswahl möglich ist, war das nicht ganz trivial. Was eben für eine Datei eine Variable war, wurde plötzlich zu Listen, über die man iterieren muss, um die Dateien serverseitig entgegenzunehmen. Macht man das jetzt konfigurierbar, dann braucht man auch die ältere Code-Variante wieder. Aber mal schauen... mir fällt gerade ein Trick ein, wie man vielleicht beide Fälle erschlägt, indem man das Datenformat vor der Verarbeitung umwandelt.
Vielleicht kommt es ja
Zu den Dateinamen: Groß- und Kleinschreibung wird auf im Serverbereich weit verbreiteten Unix-/Linuxsystemen unterschrieden. Das hat schon seine Richtigkeit, dass Datei.JPG und Datei.jpg zwei verschiedene Dateien sind. Die können unter Linux auch im gleichen Verzeichnis liegen. Weiterverarbeitende Skripte müssten die Dateitypen dann separat mit *.jpg *.JPG auflisten, oder noch besser, um alle Groß- und Kleinschreibungen mit zu berücksichtigen *.[jJ][pP][gG] oder um auch *.jpeg usw. zu erfassen: *.[jJ][pP]?([eE])[gG]. Oft wird aber eher schlampig nur nach der Variante in Kleinbuchstaben und vielleicht noch nach dem großgeschriebenen Pendant gesucht.
Von daher ist es gut, dass schon beim Upload angegeben werden kann, welche der denkbaren Varianten überhaupt zulässig sind.
Danke für die Info mit den RegeExe-Einstellungen
Ach ja, und mit Datenbankeintrag meinst du die Results-Tabelle, richtig? (nur um sicher zu gehen, dass wir da nicht auch aneinander vorbei reden)
Offline
Ich hab jetzt mal die Vorabversion auf Github als 1.3.26 veröffentlicht.
Edit: PS: Die Mehrfachauswahl bei Uploadfeldern optional abschaltbar zu machen kommt vielleicht dann in einer der nächsten Versionen. Ich habs mir mal vorgemerkt
Beitrag geändert von mrbaseman (23.01.2019 21:09:40)
Offline
Hallo Hansi,
das von dir gewünschte Feature, dass man die Mehrfachauswahl bei Uploadfeldern wieder abschalten kann ist in mpform 1.3.28 umgesetzt. Bei den Optionen zum Upload (dort wo man z.B. auch die maximale Größe einstellen kann), gibt es nun einen neuen Schalter, mit dem man Mehrfachauswahl an oder ausschalten kann. Das ganze kann pro Formular eingestellt werden und gilt dann für alle Uploadfelder dieses Formulars.
viele Grüße,
Martin
Offline
Seiten: 1