Ich habe eine Server-API, die ich gegen das Format entwickelt habe, das von Fiddler verwendet wird, um HTTP-Posts von Dateien zu machen, was ein multipart/form-data post ist. Ich versuche, etwas Ähnliches zu machen (damit ich aufhören kann, Fiddler zum Testen zu verwenden und stattdessen ein separates Programm aufrufen muss, um programmgesteuert zu curlen).curl für multipart/form-data mit einem Dateiupload
Hier ist, wie es in Fiddler eingerichtet ist, was ich replizieren muss. Die Datei hochgeladen werden MyFile.html:
---------------------------acebdf13572468
Content-Disposition: form-data; name="fieldNameHere"; filename="myfile.html"
Content-Type: text/html
<@INCLUDE *C:\myfiles\myfile.html*@>
---------------------------acebdf13572468--
Also, was ich brauche, ist für Locke etwas ähnliches zu produzieren: insbesondere der Name = Teil, durch den Dateiinhalt an der Unterseite dieses Teils folgt. Ich habe schon versucht, diese mit:
curl -F "fieldNameHere=myfile.html" http://myapi.com/
Als ich tun, dass es wenn meine Datei vollständig zu ignorieren scheint. Hier ist die ausführliche Ausgabe, wenn ich hinzufügen -v:
POST/HTTP/1.1
User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Host: perl-h4.factset.io
Accept: */*
Content-Length: 166
Expect: 100-continue
Content-Type: multipart/form-data; boundary=----------------------------981301fdaeb3
Es gibt keinen Dateiinhalt überhaupt (es ist eine große HTML-Datei). Ich denke also, dass etwas Grundlegendes hier fehlt. Alle Hinweise wären sehr willkommen.
Auch ich habe andere Stackoverflow geprüft Fragen wie diese: What is the right way to POST multipart/form-data using curl?
Aber sie sagen, im Grunde so etwas wie zu tun, was ich hier tue. Also vielleicht ist das Problem nicht meine Syntax, aber aus irgendeinem anderen Grund möchte ich die Datei nicht lesen.
aber keine Bonuspunkte mit dem überflüssigen '-X Post' Derzeit gibt .. . =) –
Oh wow, das Problem ist nur, dass ich ein @ -Zeichen vermisst habe. Erstaunlich ... danke. Ich denke, das sagt curl, dass dies der Name einer tatsächlichen Datei ist? – Stephen
Ja, ziemlich. – Scriptonomy