![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Erfahrener Benutzer
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 789
|
Hi.
Hat jemand einen Code-Schnipsel, um ein File-Upload-Array umzuschreiben? Code:
$_FILES['foo']['size']['bar']['baz'] => $aUploads['foo']['bar']['baz']['size'] bzw. $aUploads['foo']['bar']['baz']->size; $aUploads['foo']['bar']['baz']->getSize(); |
|
|
|
|
|
Nach oben #3 |
|
Erfahrener Benutzer
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 789
|
Noch nie ein Input-Feld vom Typ file mit einem Array als Namen verarbeitet oder was ist unklar?
Code:
<input type="file" name="foo[bar][baz]" /> Ist letztlich auch nicht so wichtig. Ich komm nur auf keine elegante Lösung. Alles irgendwie ein ziemlich ätzendes "rumgerechne"... Basti |
|
|
|
|
|
Nach oben #5 |
|
Erfahrener Benutzer
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 789
|
Na, wenn ich ein Formularfeld foo[bar][baz] nene, dann erwarte ich Dateigröße, -typ, -name etc. in $_FILES['foo']['bar']['baz']['size'] etc. und nicht in $_FILES['foo']['size']['bar']['baz'].
$_FILES['size']['foo']... würde ich ja auch noch verstehen, aber das gegebene Format lässt sich einfach nur beschissen handeln. Basti |
|
|
|
|
|
Nach oben #6 | |
|
Erfahrener Benutzer
Registriert seit: 05.01.2006
Ort: Düsseldorf
Beiträge: 169
|
Zitat:
HTTP_Upload http://pear.php.net/manual/en/packag...mples.multiple |
|
|
|
|
|
|
Nach oben #7 |
|
Erfahrener Benutzer
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 789
|
Habs nicht ausprobiert, aber das kann nicht funktionieren.
Aus dem PEAR-Paket: PHP-Code:
|
|
|
|
|
|
Nach oben #8 |
|
Erfahrener Benutzer
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 789
|
...so haut es hin:
PHP-Code:
Basti |
|
|
|
|
|
Nach oben #9 |
|
Erfahrener Benutzer
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 789
|
Hab mir gerad das PEAR-Paket nochmal angeschaut und es kann tatsächlich keine Werte entgegennehmen, deren Input-Name ein mehr als zweidimensionales Array darstellen.
Dazu kommt, das magic_quotes.gpc bei den Dateinamen nich berücksichtigt wird. Basti |
|
|
|
|
|
Nach oben #10 |
|
Erfahrener Benutzer
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 662
|
Warum so kompliziert?! Bau dir doch einfach eine rekursive Funktion, die das für dich übernimmt, wo ist das Problem?
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
|
|
|
|
|
Nach oben #11 |
|
Erfahrener Benutzer
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 789
|
Hab ich doch (oben heißt sie noch getThem()). Aber setz dich mal selbst dran. Wenn ich mich nicht völlig bescheuert angestellt hab (was durchaus sein kann), dann ist das ne ziemlich harte Nuss. Zumindest, was Implementierung angeht, die Aufgabe, an der ich seit langem am längsten gesessen bin (im Verhältnis zu ihrer Unscheinbarkeit). Sonst halten mich eigentlich nur komplexe Entwurfs-Aufgaben auf oder eben Bereiche, die nicht direkt PHP betreffen (SQL, XSLT, JavaScript, ...).
Drum hab ich hier auch nachgefragt und ich bin immernoch interessiert an einer simpleren, eleganteren Lösung. Basti |
|
|
|
|
|
Nach oben #12 |
|
Erfahrener Benutzer
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 662
|
Werde mir vielleicht die nächsten Tage mal den Kopf darüber zerbrechen, aber ansich kann das so schwer garnicht sein!? Ich schaue mal, was sich machen lässt, momentan habe ich den Kopf voll von anderen Dingen...
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
|
|
|
|
|
Nach oben #13 |
|
Erfahrener Benutzer
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 789
|
Das Problem ist ja eigentlich nur, ein Arrayelement anhand von der "Folge der Schlüssel" anzusprechen (z.B. "foo.size.bar.baz"). Beziehungsweise, so ist es kein Problem und die Funktion hatte eh schon in der Klasse implementiert, da ich alle Request-Parameter genau so anspreche. Ich dachte halt, ich komm da rgendwie drum rum und kann das Array einfach irgendwie umkopieren. Ist mir aber nicht gelungen.
Basti |
|
|
|
|
|
Nach oben #14 |
|
Erfahrener Benutzer
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 662
|
Man muss dazu allerdings sagen, dass es eigentlich egal sein müsste, ob das jetzt vor oder hinter dem entsprechenden Element steht!? Zumindest sollte es kein Problem darstellen, zu sagen "Erstes Element ist der Name ansich und der Rest kommt nach der Zuweisung, welche Information ich auslesen will", verstehst du, wie ich das meine?
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
|
|
|
|
|
Nach oben #15 | |
|
Erfahrener Benutzer
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 789
|
Zitat:
Basti |
|
|
|
|
|
|
Nach oben #16 |
|
Erfahrener Benutzer
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 662
|
naja, wenn du eine Klasse schreibst, der du sagst "Greife auf bla.blubb.bla.blubb zu", kannst du doch von der Klasse automatisch sagen lassen, den ersten Part "bla" als Array nutzen ($_FILES['bla']), dann den Part auf den man zugreifen will und dann den Rest -> $_FILES['bla']['size']['blubb']['bla']['blubb']!?
Ich verstehe nicht so ganz, warum man da jetzt so rumexperimentieren muss!?
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
|
|
|
|
|
Nach oben #17 |
|
Erfahrener Benutzer
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 789
|
So ist's doch auch umgesetzt. Ich dachte halt wie geschrieben, es gäbe einen direkteren Weg, ein Array umzuschreiben, anstatt auf jedes Element zuzugreifen, schauen, obs ein Array enthält etc. bis man bei einem Wert angelangt ist, sich den "Pfad" dahin zu merken, für jedes Attribut diesen einmal umzuschreinen, damit auf $_FILES zuzugreifen und aus den so geammelten Werten dann eben ein Objekt zu bauen.
Hätte mich halt gefreut zu hören, wie z.B. bestimmte PHP-nativen Funktionen für derartiges Zeug benutzt werden könnten. Und so hab ich halt selbst auch ertmal rumgesucht und probiert, obs nicht anders geht - auch, wenn die Methode, über den Pfad auf ein Array zuzugreifen ja schon von Anfang an da war. Basti |
|
|
|