Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.php > #3978 > unrolled thread

Wie komme ich bei Content/Type:multipart/formdata an mehrere gleichbenannte Binärdatei ran

Started byGerome Muent <kontakt@bmservices.de>
First post2016-10-21 17:57 +0200
Last post2016-10-24 17:35 +0100
Articles 14 — 5 participants

Back to article view | Back to de.comp.lang.php


Contents

  Wie komme ich bei Content/Type:multipart/formdata an mehrere gleichbenannte Binärdatei ran Gerome Muent <kontakt@bmservices.de> - 2016-10-21 17:57 +0200
    Re: Wie komme ich bei Content/Type:multipart/formdata an mehrere gleichbenannte Binärdatei ran Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-10-21 18:49 +0100
      Re: Wie komme ich bei Content/Type:multipart/formdata an mehrere gleichbenannte Binärdatei ran Gerome Muent <kontakt@bmservices.de> - 2016-10-24 07:43 +0200
        Re: Wie komme ich bei Content/Type:multipart/formdata an mehrere gleichbenannte Binärdatei ran Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-10-24 12:33 +0100
        Re: Wie komme ich bei Content/Type:multipart/formdata an mehrere gleichbenannte Binärdatei ran Arno Welzel <usenet@arnowelzel.de> - 2016-11-03 08:43 +0100
    Re: Wie komme ich bei Content/Type:multipart/formdata an mehrere gleichbenannte Binärdatei ran Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2016-10-24 06:33 +0000
      Re: Wie komme ich bei Content/Type:multipart/formdata an mehrere gleichbenannte Binärdatei ran Gerome Muent <kontakt@bmservices.de> - 2016-10-24 08:50 +0200
      Re: Wie komme ich bei Content/Type:multipart/formdata an mehrere gleichbenannte Binärdatei ran Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-10-24 12:32 +0100
        Re: Wie komme ich bei Content/Type:multipart/formdata an mehrere gleichbenannte Binärdatei ran "Christoph M. Becker" <cmbecker69@arcor.de> - 2016-10-24 18:15 +0200
          Re: Wie komme ich bei Content/Type:multipart/formdata an mehrere gleichbenannte Binärdatei ran Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2016-10-24 16:59 +0000
            Re: Wie komme ich bei Content/Type:multipart/formdata an mehrere gleichbenannte Binärdatei ran "Christoph M. Becker" <cmbecker69@arcor.de> - 2016-10-24 19:10 +0200
              Re: Wie komme ich bei Content/Type:multipart/formdata an mehrere gleichbenannte Binärdatei ran Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2016-10-24 17:18 +0000
      [SOLVED]Re: Wie komme ich bei Content/Type:multipart/formdata an mehrere gleichbenannte Binärdatei ran Gerome Muent <kontakt@bmservices.de> - 2016-10-24 17:55 +0200
        [SOLVED] Wie komme ich bei “Content-Type: multipart/form-data” an mehrere gleichbenannte Binärdatei ran (was: [SOLVED]Re: Wie komme ich bei Content/Type:multipart/formdata an mehrere gleichbenannte Binärdatei ran) Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-10-24 17:35 +0100

#3978 — Wie komme ich bei Content/Type:multipart/formdata an mehrere gleichbenannte Binärdatei ran

FromGerome Muent <kontakt@bmservices.de>
Date2016-10-21 17:57 +0200
SubjectWie komme ich bei Content/Type:multipart/formdata an mehrere gleichbenannte Binärdatei ran
Message-ID<nuddtb$d3t$1@news.albasani.net>
Hallo zusammen,
eine Kundenserver, an dem ich nichts drehen kann, liefert mir bei 
"Content/Type:multipart/formdata"
die Daten in folgender Form (schematisch dargestellt)


Content-Disposition: form-data; name="result"; filename="result.json"
...
Content-Disposition: form-data; name="imagename"; filename="bild1.jpg"
...
Content-Disposition: form-data; name="imagename"; filename="bild2.jpg"
...
Content-Disposition: form-data; name="imagename"; filename="bild3.jpg"


In $_FILES habe ich dann die Arraykeys "result" und "imagename"
result ist völlig ok, in imagename ist nur das letzte Bild, weil der 
gleiche name "imagename die beiden Vorgänger wohl überschreibt.

Mir scheint sowas eh nicht standardkonform mit gleichen name="...", aber 
ich kann nix dran ändern.

hat jemand eine Idee, wie ich $_FILES dazu bringe, daß die 4 Teilinhalte 
statt nur 2 drin sind?

Danke für tips, Gérôme

[toc] | [next] | [standalone]


#3979

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2016-10-21 18:49 +0100
Message-ID<3935194.LvFx2qVVIh@PointedEars.de>
In reply to#3978
Gerome Muent wrote:

> eine Kundenserver, an dem ich nichts drehen kann, liefert mir bei
> "Content/Type:multipart/formdata"
> die Daten in folgender Form (schematisch dargestellt)
> 
> 
> Content-Disposition: form-data; name="result"; filename="result.json"
> ...
> Content-Disposition: form-data; name="imagename"; filename="bild1.jpg"
> ...
> Content-Disposition: form-data; name="imagename"; filename="bild2.jpg"
> ...
> Content-Disposition: form-data; name="imagename"; filename="bild3.jpg"
> 
> 
> In $_FILES habe ich dann die Arraykeys "result" und "imagename"
> result ist völlig ok, in imagename ist nur das letzte Bild, weil der
> gleiche name "imagename die beiden Vorgänger wohl überschreibt.

Richtig.
 
> Mir scheint sowas eh nicht standardkonform mit gleichen name="...", […]

Doch, das ist es.

> hat jemand eine Idee, wie ich $_FILES dazu bringe, daß die 4 Teilinhalte
> statt nur 2 drin sind?

Ja, das hattest Du zuletzt vor zwei Monaten und 6 Tagen hier gefragt und es 
wurde auch beantwortet.

-- 
PointedEars
Zend Certified PHP Engineer 
<http://www.zend.com/en/yellow-pages/ZEND024953> | Twitter: @PointedEars2
Please do not cc me. / Bitte keine Kopien per E-Mail.

[toc] | [prev] | [next] | [standalone]


#3980

FromGerome Muent <kontakt@bmservices.de>
Date2016-10-24 07:43 +0200
Message-ID<nuk72g$5ho$1@news.albasani.net>
In reply to#3979
Am 21.10.2016 um 19:49 schrieb Thomas 'PointedEars' Lahn:
> Gerome Muent wrote:

> Ja, das hattest Du zuletzt vor zwei Monaten und 6 Tagen hier gefragt und es
> wurde auch beantwortet.

Nein, finde da keine Antwort, wie ich per $_FILES an ALLE Dateien 
rankomme und nicht nur an die letzte, wenn der übermittelte 
name="varname" für alle gleich ist.
Das Problem gab es damals so auch noch garnicht.

Aber vielleicht kannst du mir eine Antwort geben?

Danke, Gerôme

[toc] | [prev] | [next] | [standalone]


#3984

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2016-10-24 12:33 +0100
Message-ID<2009121.ElGaqSPkdT@PointedEars.de>
In reply to#3980
Gerome Muent wrote:

> Am 21.10.2016 um 19:49 schrieb Thomas 'PointedEars' Lahn:
>> Ja, das hattest Du zuletzt vor zwei Monaten und 6 Tagen hier gefragt und
>> es wurde auch beantwortet.
> 
> Nein, finde da keine Antwort, wie ich per $_FILES an ALLE Dateien
> rankomme und nicht nur an die letzte, wenn der übermittelte
> name="varname" für alle gleich ist.
> Das Problem gab es damals so auch noch garnicht.

Du irrst.

> Aber vielleicht kannst du mir eine Antwort geben?

<http://www.tty1.net/smart-questions_de.html>

-- 
PointedEars
Zend Certified PHP Engineer 
<http://www.zend.com/en/yellow-pages/ZEND024953> | Twitter: @PointedEars2
Please do not cc me. / Bitte keine Kopien per E-Mail.

[toc] | [prev] | [next] | [standalone]


#3991

FromArno Welzel <usenet@arnowelzel.de>
Date2016-11-03 08:43 +0100
Message-ID<b89b621e-4952-911f-992b-1a34c7f7f6e8@arnowelzel.de>
In reply to#3980
Gerome Muent schrieb am 2016-10-24 um 07:43:

> Am 21.10.2016 um 19:49 schrieb Thomas 'PointedEars' Lahn:
>> Gerome Muent wrote:
> 
>> Ja, das hattest Du zuletzt vor zwei Monaten und 6 Tagen hier gefragt und es
>> wurde auch beantwortet.
> 
> Nein, finde da keine Antwort, wie ich per $_FILES an ALLE Dateien 
> rankomme und nicht nur an die letzte, wenn der übermittelte 
> name="varname" für alle gleich ist.
> Das Problem gab es damals so auch noch garnicht.
> 
> Aber vielleicht kannst du mir eine Antwort geben?

Hint: is_array(), varname[0], varname[1], varname[2] ...


-- 
Arno Welzel
https://arnowelzel.de
http://de-rec-fahrrad.de
http://fahrradzukunft.de

[toc] | [prev] | [next] | [standalone]


#3981

FromStefan+Usenet@Froehlich.Priv.at (Stefan Froehlich)
Date2016-10-24 06:33 +0000
Message-ID<5t580daaedi582n3e8%sfroehli@Froehlich.Priv.at>
In reply to#3978
On Fri, 21 Oct 2016 17:57:31 Gerome Muent wrote:
> Content-Disposition: form-data; name="imagename"; filename="bild1.jpg"
> Content-Disposition: form-data; name="imagename"; filename="bild2.jpg"
> Content-Disposition: form-data; name="imagename"; filename="bild3.jpg"

> hat jemand eine Idee, wie ich $_FILES dazu bringe, daß die 4 Teilinhalte 
> statt nur 2 drin sind?

$_FILES wirst Du schlicht und einfach *nicht* dazu bringen koennen,
Dir die einzelnen Files zu servieren.

Wenn Du am Input tatsächlich nichts ändern kannst, was sehr bedauerlich
wäre, dann wird Dir nichts anderes übrig bleiben, als mit den rohen
Eingangsdaten zu arbeiten.
 
Servus,
   Stefan

-- 
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Stefan - die massgeblichste Verkündigung der Gier.</b
(Sloganizer)

[toc] | [prev] | [next] | [standalone]


#3982

FromGerome Muent <kontakt@bmservices.de>
Date2016-10-24 08:50 +0200
Message-ID<nukaus$rno$1@news.albasani.net>
In reply to#3981
Am 24.10.2016 um 08:33 schrieb Stefan Froehlich:

> Wenn Du am Input tatsächlich nichts ändern kannst, was sehr bedauerlich
> wäre, dann wird Dir nichts anderes übrig bleiben, als mit den rohen
> Eingangsdaten zu arbeiten.

Das habe ich befürchtet.
Ich verhandle gerade mit dem Kunden bzw. seinen Entwicklern und habe 
über die Unsinnigkeit eines solchen Formulars argumentiert:
<form ... enctype="multipart/form-data">
<input type="file" name="uploadfile" />
<input type="file" name="uploadfile" />
<input type="file" name="uploadfile" />
<input type="file" name="uploadfile" />
...
</form>
Da kommt dann ja auch nur der Inhalt des letzten Feldes an.
Selbst wenn das formell vom RFC her richtig sein sollte, dann wäre es 
doch sinnvoller:
<form ... enctype="multipart/form-data">
<input type="file" name="uploadfile1" />
<input type="file" name="uploadfile2" />
<input type="file" name="uploadfile3" />
<input type="file" name="uploadfile4" />
...
</form>

Erst wenn das nicht fruchtet, gehe ich den Weg über die RAW-Daten.
Habe dafür in PHP aber auch keinen fertigen Parser gefunden.
Wenn ich das selbst zerhacke, sehe ich die Gefahr, daß ich u.U. 
Binärdaten kaputt mache.


Grüße, Gérôme

[toc] | [prev] | [next] | [standalone]


#3983

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2016-10-24 12:32 +0100
Message-ID<3939067.LvFx2qVVIh@PointedEars.de>
In reply to#3981
Stefan Froehlich wrote:

> On Fri, 21 Oct 2016 17:57:31 Gerome Muent wrote:
>> Content-Disposition: form-data; name="imagename"; filename="bild1.jpg"
>> Content-Disposition: form-data; name="imagename"; filename="bild2.jpg"
>> Content-Disposition: form-data; name="imagename"; filename="bild3.jpg"
> 
>> hat jemand eine Idee, wie ich $_FILES dazu bringe, daß die 4 Teilinhalte
>> statt nur 2 drin sind?
> 
> $_FILES wirst Du schlicht und einfach *nicht* dazu bringen koennen,
> Dir die einzelnen Files zu servieren.
> 
> Wenn Du am Input tatsächlich nichts ändern kannst, was sehr bedauerlich
> wäre, dann wird Dir nichts anderes übrig bleiben, als mit den rohen
> Eingangsdaten zu arbeiten.

PHP 5.6.x ist jedoch anscheinend nicht in der Lage, diese adäquat 
verarbeitet anzubieten, wenn multiple Namen nicht auf “[]” enden (RTFM): 
liest man php://input aus, enthält der String auch nur einen Eintrag für 
jeden solchen Multipart-Namen (und dann immer den letzten Wert), obwohl das 
beim Request anders ist und der RFC keine eindeutigen Namen fordert.  BTDT.  
Und (RTFM) $HTTP_RAW_POST_DATA wird erstens für multipart/form-data nicht 
gesetzt und ist ausserdem seit PHP 5.6.0 deprecated.

Die Lösung ist daher – von einem Bugreport abgesehen –, es mit php://input 
und einer neueren PHP-Version als 5.6.x zu versuchen, oder entweder PHP-
konforme Multipart-Namen zu verwenden oder nicht primär PHP für die 
Verarbeitung dieses Formulars zu verwenden.

-- 
PointedEars
Zend Certified PHP Engineer 
<http://www.zend.com/en/yellow-pages/ZEND024953> | Twitter: @PointedEars2
Please do not cc me. / Bitte keine Kopien per E-Mail.

[toc] | [prev] | [next] | [standalone]


#3986

From"Christoph M. Becker" <cmbecker69@arcor.de>
Date2016-10-24 18:15 +0200
Message-ID<nulc26$544$1@solani.org>
In reply to#3983
Am 24.10.2016 um 13:32 schrieb Thomas 'PointedEars' Lahn:

> Stefan Froehlich wrote:
> 
>> Wenn Du am Input tatsächlich nichts ändern kannst, was sehr bedauerlich
>> wäre, dann wird Dir nichts anderes übrig bleiben, als mit den rohen
>> Eingangsdaten zu arbeiten.
> 
> PHP 5.6.x ist jedoch anscheinend nicht in der Lage, diese adäquat 
> verarbeitet anzubieten, wenn multiple Namen nicht auf “[]” enden (RTFM): 
> liest man php://input aus, enthält der String auch nur einen Eintrag für 
> jeden solchen Multipart-Namen (und dann immer den letzten Wert), obwohl das 
> beim Request anders ist und der RFC keine eindeutigen Namen fordert.  BTDT.  
> 
> Die Lösung ist daher – von einem Bugreport abgesehen –, […]

Ein Bug-Report wäre auf jeden Fall begrüßenswert, finde ich.

-- 
Christoph M. Becker

[toc] | [prev] | [next] | [standalone]


#3988

FromStefan+Usenet@Froehlich.Priv.at (Stefan Froehlich)
Date2016-10-24 16:59 +0000
Message-ID<1t580e3c9di5e87n3e8%sfroehli@Froehlich.Priv.at>
In reply to#3986
On Mon, 24 Oct 2016 18:15:10 Christoph M. Becker wrote:
> Am 24.10.2016 um 13:32 schrieb Thomas 'PointedEars' Lahn:
> > Stefan Froehlich wrote:
> >> Wenn Du am Input tatsächlich nichts ändern kannst, was sehr
> >> bedauerlich wäre, dann wird Dir nichts anderes übrig bleiben, als mit
> >> den rohen Eingangsdaten zu arbeiten.

> > PHP 5.6.x ist jedoch anscheinend nicht in der Lage, diese adäquat
> > verarbeitet anzubieten, wenn multiple Namen nicht auf “[]” enden [...]
> > obwoh [...] der RFC keine eindeutigen Namen fordert.

> > Die Lösung ist daher – von einem Bugreport abgesehen –, […]
 
> Ein Bug-Report wäre auf jeden Fall begrüßenswert, finde ich.

Die Frage ist: Was wäre denn das wünschenswerte (oder gar: zu
erwartende) Ergebnis? Gleiches Verhalten fuer name="foo" wie für
name="foo[]"?

Ich bin (selten, aber doch) ganz froh, dass ich Eingabeelemente in
einem HTML-Dokument durch nachfolgende Elemente mit gleichem Namen
sozusagen überschreiben kann. Das wäre dann dahin.

Servus,
   Stefan

-- 
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Gewöhnliches für ungewöhnliche Leute - pusten mit Stefan!
(Sloganizer)

[toc] | [prev] | [next] | [standalone]


#3989

From"Christoph M. Becker" <cmbecker69@arcor.de>
Date2016-10-24 19:10 +0200
Message-ID<nulf9r$7gl$1@solani.org>
In reply to#3988
On 24.10.2016 um 18:59 schrieb Stefan Froehlich:

> On Mon, 24 Oct 2016 18:15:10 Christoph M. Becker wrote:
>
>> Am 24.10.2016 um 13:32 schrieb Thomas 'PointedEars' Lahn:
>>
>>> Die Lösung ist daher – von einem Bugreport abgesehen –, […]
>  
>> Ein Bug-Report wäre auf jeden Fall begrüßenswert, finde ich.
> 
> Die Frage ist: Was wäre denn das wünschenswerte (oder gar: zu
> erwartende) Ergebnis? Gleiches Verhalten fuer name="foo" wie für
> name="foo[]"?
> 
> Ich bin (selten, aber doch) ganz froh, dass ich Eingabeelemente in
> einem HTML-Dokument durch nachfolgende Elemente mit gleichem Namen
> sozusagen überschreiben kann. Das wäre dann dahin.

Es geht hier um php://input, das laut Thomas unter PHP 5.6 nicht den
vollständigen Payload enthält. Das wäre auf jeden Fall ein Bug. $_FILES
(etc.) sollten natürlich weiter so arbeiten wie bisher.

-- 
Christoph M. Becker

[toc] | [prev] | [next] | [standalone]


#3990

FromStefan+Usenet@Froehlich.Priv.at (Stefan Froehlich)
Date2016-10-24 17:18 +0000
Message-ID<9t580e4239i5e87n3e8%sfroehli@Froehlich.Priv.at>
In reply to#3989
On Mon, 24 Oct 2016 19:10:29 Christoph M. Becker wrote:
> On 24.10.2016 um 18:59 schrieb Stefan Froehlich:
> > On Mon, 24 Oct 2016 18:15:10 Christoph M. Becker wrote:
> >> Ein Bug-Report wäre auf jeden Fall begrüßenswert, finde ich.
 
> > Die Frage ist: Was wäre denn das wünschenswerte (oder gar: zu
> > erwartende) Ergebnis? Gleiches Verhalten fuer name="foo" wie für
> > name="foo[]"?
 
> Es geht hier um php://input, das laut Thomas unter PHP 5.6 nicht den
> vollständigen Payload enthält.

Ah, ok, dann hatte ich das nur falsch zugeordnet. Klar, das sollte
natürlich funktionieren.

Servus,
   Stefan

-- 
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Für die schönen Dinge im Leben! Stefan - Glaube das Unglaubliche!
(Sloganizer)

[toc] | [prev] | [next] | [standalone]


#3985 — [SOLVED]Re: Wie komme ich bei Content/Type:multipart/formdata an mehrere gleichbenannte Binärdatei ran

FromGerome Muent <kontakt@bmservices.de>
Date2016-10-24 17:55 +0200
Subject[SOLVED]Re: Wie komme ich bei Content/Type:multipart/formdata an mehrere gleichbenannte Binärdatei ran
Message-ID<nulatg$b9b$1@news.albasani.net>
In reply to#3981
Am 24.10.2016 um 08:33 schrieb Stefan Froehlich:

> $_FILES wirst Du schlicht und einfach *nicht* dazu bringen koennen,
> Dir die einzelnen Files zu servieren.
>
> Wenn Du am Input tatsächlich nichts ändern kannst, was sehr bedauerlich
> wäre, dann wird Dir nichts anderes übrig bleiben, als mit den rohen
> Eingangsdaten zu arbeiten.

Puh, ich konnte den Kunden überreden, eindeutige durchnummerierte 
name="..." zu verwenden.Jetzt klappt alles ohne Verbiegen mit $_FILES!

Grüße, Gérôme






[toc] | [prev] | [next] | [standalone]


#3987 — [SOLVED] Wie komme ich bei “Content-Type: multipart/form-data” an mehrere gleichbenannte Binärdatei ran (was: [SOLVED]Re: Wie komme ich bei Content/Type:multipart/formdata an mehrere gleichbenannte Binärdatei ran)

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2016-10-24 17:35 +0100
Subject[SOLVED] Wie komme ich bei “Content-Type: multipart/form-data” an mehrere gleichbenannte Binärdatei ran (was: [SOLVED]Re: Wie komme ich bei Content/Type:multipart/formdata an mehrere gleichbenannte Binärdatei ran)
Message-ID<1631710.tdWV9SEqCh@PointedEars.de>
In reply to#3985
[Subject korrigiert]

Gerome Muent wrote:

> Am 24.10.2016 um 08:33 schrieb Stefan Froehlich:
>> $_FILES wirst Du schlicht und einfach *nicht* dazu bringen koennen,
>> Dir die einzelnen Files zu servieren.
>>
>> Wenn Du am Input tatsächlich nichts ändern kannst, was sehr bedauerlich
>> wäre, dann wird Dir nichts anderes übrig bleiben, als mit den rohen
>> Eingangsdaten zu arbeiten.
> 
> Puh, ich konnte den Kunden überreden, eindeutige durchnummerierte
> name="..." zu verwenden.Jetzt klappt alles ohne Verbiegen mit $_FILES!

Mit gleichen Namen, die auf “[]” enden, würde es auch und sogar besser 
funktionieren.  Wer lesen kann, ist hier klar im Vorteil.

<http://php.net/manual/en/features.file-upload.php>
<http://php.net/manual/en/features.file-upload.multiple.php>

-- 
PointedEars
Zend Certified PHP Engineer 
<http://www.zend.com/en/yellow-pages/ZEND024953> | Twitter: @PointedEars2
Please do not cc me. / Bitte keine Kopien per E-Mail.

[toc] | [prev] | [standalone]


Back to top | Article view | de.comp.lang.php


csiph-web