2013-04-22 14 views
5

Jestem w stanie wysłać HTTP POST plik tekstowy do mojego serwera za pomocą następującego polecenia curl:PowerShell równoważne dla cURL przesyłanego pliku poleceń

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

Serwer spodziewa się plik z $ _FILES [ „plik”] .

Mam następujący tak daleko, ale to nie działa:

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

zwraca 0, a nie przesyłać do serwera

Jak mogę wysłać plik jako $ _FILES [” plik']? Jak mogę zobaczyć odpowiedź z serwera?

+0

Skończyło się na tym, że ściągnąłem plik wykonywalny curla dla systemu Windows i działało to cudo! – Takashi

Odpowiedz

6

myślę, że powinno być coś takiego:

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

Uwaga: to nie wymaga PowerShell V3. Ponadto może być konieczne określenie parametru -ContentType jako "application/x-www-form-urlencoded". Polecam uzyskać Fiddler2 i użyć go do sprawdzenia żądania w przypadkach zawijania i Inovke-RestMethod, aby uzyskać poprawne parametry irm. Zakłada to, że zawartość pliku jest dość mała i nie jest binarna. Jeśli nie, prawdopodobnie musisz przejść do treści typu multipart/form-data.

+2

curl's -F _jest_ wieloczęściowy/formularz danych POST, więc myślę, że większość z tej odpowiedzi jest wtedy ... nie dokładne –

0

Aby rozwiązać ten problem, pobierz curl.exe dla systemu Windows i nadal używam curl.

Powiązane problemy