EDIT: Ich bin die Aufrechterhaltung einer ähnlichen, aber tiefer gehende Antwort auf: https://stackoverflow.com/a/28380690/895245
genau zu sehen, was, verwenden nc -l
und ein User-Agent wie ein Browser oder cURL geschieht.
Speichern Sie das Formular an eine .html
Datei:
<form action="http://localhost:8000" method="post" enctype="multipart/form-data">
<p><input type="text" name="text" value="text default">
<p><input type="file" name="file1">
<p><input type="file" name="file2">
<p><button type="submit">Submit</button>
</form>
Dateien erstellen laden:
echo 'Content of a.txt.' > a.txt
echo '<!DOCTYPE html><title>Content of a.html.</title>' > a.html
Run:
nc -l localhost 8000
Öffnen Sie die HTML-Datei auf Ihrem Browser, wählen Sie die Dateien und klicken Sie auf Senden und überprüfen Sie das Terminal.
nc
druckt die Anfrage erhalten. Firefox gesendet:
POST/HTTP/1.1
Host: localhost:8000
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:29.0) Gecko/20100101 Firefox/29.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie: __atuvc=34%7C7; permanent=0; _gitlab_session=226ad8a0be43681acf38c2fab9497240; __profilin=p%3Dt; request_method=GET
Connection: keep-alive
Content-Type: multipart/form-data; boundary=---------------------------9051914041544843365972754266
Content-Length: 554
-----------------------------9051914041544843365972754266
Content-Disposition: form-data; name="text"
text default
-----------------------------9051914041544843365972754266
Content-Disposition: form-data; name="file1"; filename="a.txt"
Content-Type: text/plain
Content of a.txt.
-----------------------------9051914041544843365972754266
Content-Disposition: form-data; name="file2"; filename="a.html"
Content-Type: text/html
<!DOCTYPE html><title>Content of a.html.</title>
-----------------------------9051914041544843365972754266--
Aternativelly, cURL sollte die gleiche POST-Anfrage als einen Browser Formular senden:
nc -l localhost 8000
curl -F "text=default" -F "[email protected]" -F "[email protected]" localhost:8000
Sie können mehrere Tests durchführen mit:
while true; do printf '' | nc -l localhost 8000; done
nur Verwirrung zu vermeiden Beachten Sie, dass vor jeder Begrenzungszeichenfolge im Inhalt zwei zusätzliche Bindestriche angezeigt werden: . Für die letzte Zeile ist - - –
Irgendwelche guten Ideen zum Erstellen einer mehrteiligen Datei wie folgt mit einer for-Schleife? Mein Problem liegt bei diesem zusätzlichen "-" vor dem endgültigen \ r \ n. Wenn es nur am Ende wäre, könnte ich es anhängen ... Würdest du überprüfen, ob du das letzte Objekt in deinem for-loop-Array warst und etwas anderes anhängen? – turkeyhundt
@turkeyhundt - zwei Optionen kommen sofort in den Sinn: 1) schreibe deine Schleife als (Grenze drucken, Zeug drucken), und dann, nachdem die for Schleife abgeschlossen ist, folge dem mit (Grenze drucken mit zusätzlichen Bindestrichen). Das ist wahrscheinlich der einfachste Weg. 2) Schreiben Sie Ihre for() -Schleife, um was auch immer Index-Variable Sie auf 0 statt von oben 0 ausführen. Dann fügen Sie zwei zusätzliche Bindestriche, wenn Sie die Grenze am Ende drucken, wenn die Indexvariable 0 ist. –