2013-04-22 5 views
5

Я могу отправить HTTP POST текстового файл на мой сервер, используя следующую Cu команды: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

Я закончил загрузку завитка для окон, и это сработало чудеса! – Takashi

ответ

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 и использовать его для проверки запроса в случаях зависания и Inovke-RestMethod, чтобы помочь правильно настроить параметры irm. Предполагается, что содержимое файла довольно мало и не является двоичным. Если нет, вам, вероятно, нужно перейти к типу контента multipart/form-data.

+2

curl's -F _is_ a multipart/form-data POST, поэтому я думаю, что большая часть этого ответа тогда ... неточна –

0

Чтобы решить эту проблему, я загружаю curl.exe для окон и все еще использую завиток.

Смежные вопросы