我可以使用以下cURL命令将HTTP POST文本文件发送到我的服务器:
curl -i -F file=@file.txt http://www.website.com/put_file
服务器需要来自$ _FILES ['file']的文件。
到目前为止,我有以下内容,但它无效:
$url = http://www.website.com/put_file
$file = "c:\file.txt"
$wc = new-object System.Net.WebClient
$wc.UploadFile($url, $file.FullName)
它返回0,并且没有上传到服务器
如何将文件作为$ _FILES ['file']发送?另外,如何从服务器上看到响应?
答案 0 :(得分:8)
我认为它应该是这样的:
$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。
答案 1 :(得分:3)
在Powershell中,您可以使用curl.exe代替curl(是的,是不同的命令:http://get-cmd.com/?p=5181)
curl.exe -i -F file=@file.txt http://www.website.com/put_file
或者您可以在Powershell 3中使用Invoke-RestMethod
有关Powershell 3中Invoke-RestMethod的更多详细信息,位于https://superuser.com/questions/344927/powershell-equivalent-of-curl
答案 2 :(得分:0)
要解决这个问题,我下载curl.exe for windows,仍然使用curl。
答案 3 :(得分:-1)
在使用小提琴手试图匹配卷曲几个小时后,我放弃了,只是使用了这个家伙的功能(见下面的链接)。工作就像一个魅力。
http://blog.majcica.com/2016/01/13/powershell-tips-and-tricks-multipartform-data-requests/