2013-04-22 10 views
5

Ich bin in der Lage HTTP POST eine Textdatei auf meinen Server mit dem folgenden cURL-Befehl zu senden:Powershell-äquivalent für cURL Befehl Hochladen der Datei

curl -i -F [email protected] http://www.website.com/put_file 

Der Server ist eine Datei von $ _FILES [ ‚Datei‘] erwartet .

Ich habe nach dem bisher aber es funktioniert nicht:

$url = http://www.website.com/put_file 
$file = "c:\file.txt" 
$wc = new-object System.Net.WebClient 
$wc.UploadFile($url, $file.FullName) 

es 0 zurück, und es hat nicht

auf den Server hochladen Wie kann ich die Datei als $ _FILES [‘senden Datei']? Wie kann ich die Antwort vom Server sehen?

+0

Ich beendete das Herunterladen der Curl ausführbare Datei für Windows, und es hat Wunder gewirkt! – Takashi

Antwort

6

Ich denke, es ist so etwas wie dies sein sollte:

$body = "file=$(get-content file.txt -raw)" 
Invoke-RestMethod -uri http://www.websetite.com/put_file -method POST -body $body 

Hinweis: Diese Powershell V3 erfordert. Möglicherweise müssen Sie auch den Parameter -ContentType als "application/x-www-form-urlencoded" angeben. Ich empfehle, Fiddler2 zu bekommen und es zu verwenden, um die Anfrage in den Fällen curl und Inovke-RestMethod zu untersuchen, um zu helfen, die irm Parameter richtig zu erhalten. Dies setzt voraus, dass der Dateiinhalt relativ klein und nicht binär ist. Wenn nicht, müssen Sie wahrscheinlich zum Inhaltstyp multipart/form-data gehen.

+2

curl -F _ist_ ein Multipart/Form-Daten-POST, so denke ich, dass der Großteil dieser Antwort dann ... nicht genau ist –

0

Um dies zu lösen, lade ich curl.exe für Windows, und immer noch verwendet curl.