2013-04-22 32 views
5

:PowerShell eşdeğer aşağıdaki cURL komutunu kullanarak benim sunucusuna HTTP POST bir metin dosyası göndermek mümkün duyuyorum

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

sunucu $ _FILES [ 'file'] bir dosya bekliyor .

Ben şimdiye kadar şu var ama çalışmıyor:

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

0 döndürür ve ben $ _FILES [' olarak dosya göndermek nasıl sunucuya

yüklemek vermedi dosya']? Ayrıca, sunucudan yanıtı nasıl görebilirim?

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

Not:

+0

Pencereler için curl yürütülebilir dosyasını indirmeyi bitirdim ve harikalar yarattı! – Takashi

cevap

6

Ben böyle bir şey olması gerektiğini düşünüyorum bu PowerShell V3 gerektirir. Ayrıca, -ContentType parametresini "application/x-www-form-urlencoded" olarak belirtmeniz gerekebilir. Ben Fiddler2 almak ve irm parametreleri doğru yardımcı olmak için hem curl hem de Inovke-RestMethod durumlarda isteği incelemek için kullanın. Bu, dosya içeriğinin oldukça küçük ve ikili olmayan olduğunu varsayar. Değilse, muhtemelen içerik türüne multipart/form-data gitmeniz gerekir.

+2

curl's -F _is_ çok parçalı/form-veri POST, bu yüzden bu cevabın çoğunun ... doğru değil sanırım –

0

Bunu çözmek için, windows için curl.exe'yi indiriyorum ve yine de curl kullanıyorum.

İlgili konular