2013-04-22 5 views
5

मैं HTTP POST निम्नलिखित cURL आदेश का उपयोग कर अपने सर्वर के लिए एक पाठ फ़ाइल भेजने के लिए कर रहा हूँ:PowerShell बराबर

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

मैंने खिड़कियों के लिए निष्पादन योग्य कर्ल डाउनलोड करना समाप्त कर दिया, और यह चमत्कार किया! – Takashi

उत्तर

6

मुझे लगता है कि यह कुछ इस तरह होना चाहिए:

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

नोट: इस PowerShell वी 3 की आवश्यकता है। साथ ही, आपको -ContentType पैरामीटर "application/x-www-form-urlencoded" के रूप में निर्दिष्ट करने की आवश्यकता हो सकती है। मैं Fiddler2 प्राप्त करने की सलाह देता हूं और आईआरएम पैरामीटर को सही करने में सहायता के लिए कर्ल और इनोवके-रेस्टमेड दोनों मामलों में अनुरोध का निरीक्षण करने के लिए इसका उपयोग करता हूं। यह माना जाता है कि फ़ाइल सामग्री काफी छोटी और गैर-बाइनरी हैं। यदि नहीं, तो आपको शायद सामग्री प्रकार मल्टीपार्ट/फॉर्म-डेटा पर जाना होगा।

+2

curl's -F _is_ एक मल्टीपार्ट/फॉर्म-डेटा पोस्ट, तो मुझे लगता है कि इनमें से अधिकतर उत्तर तब है ... सटीक नहीं –

0

इसे हल करने के लिए, मैं विंडोज़ के लिए curl.exe डाउनलोड करता हूं, और अभी भी कर्ल का उपयोग करता हूं।