2013-04-22 49 views
5

我可以使用以下cURL命令發送HTTP POST一個文本文件到我的服務器:PowerShell的等效cURL命令上傳文件

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

服務器預計從$ _FILES [「文件」]文件。

我見到目前爲止以下,但它不工作:

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

返回0,並沒有上傳到服務器

我如何發送文件作爲$ _FILES [」文件']?另外,我怎樣才能看到服務器的響應?

+0

我結束了下載curl可執行文件的窗口,它的奇蹟! – Takashi 2013-06-03 16:25:18

回答

6

我想應該是這樣的:

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

注:這確實需要PowerShell的V3。另外,您可能需要將-ContentType參數指定爲"application/x-www-form-urlencoded"。我建議獲得Fiddler2並使用它來檢查curl和Inovke-RestMethod情況下的請求,以幫助獲取正確的irm參數。這是假設文件內容非常小而且不是二進制的。如果不是,您可能需要轉到內容類型multipart/form-data。

+2

curl's -F _is_ multipart/form-data POST,所以我想這個答案的大部分是...不準確 – 2013-04-22 06:39:24

0

爲了解決這個問題,我下載了curl.exe for windows,並仍然使用curl。