Windows 与cURL命令上载文件等效的PowerShell

Windows 与cURL命令上载文件等效的PowerShell,windows,post,powershell,curl,http-post,Windows,Post,Powershell,Curl,Http Post,我可以使用以下cURL命令向服务器发送HTTP POST文本文件: curl -i -F file=@file.txt http://www.website.com/put_file 服务器需要来自$\u FILES['file']的文件 到目前为止,我有以下情况,但它不起作用: $url = http://www.website.com/put_file $file = "c:\file.txt" $wc = new-object System.Net.WebClient $wc.Uploa

我可以使用以下cURL命令向服务器发送HTTP POST文本文件:

curl -i -F file=@file.txt http://www.website.com/put_file
服务器需要来自$\u 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,但未上载到服务器


如何将文件作为$\u FILES['file']发送?另外,如何查看服务器的响应?

我认为应该是这样的:

$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”
。我建议在curl和Inovke RestMethod案例中获取并使用它来检查请求,以帮助正确获取irm参数。这是假设文件内容相当小且非二进制。如果没有,您可能需要转到内容类型多部分/表单数据。

为了解决这个问题,我下载了适用于windows的curl.exe,但仍然使用curl。

在使用fiddler尝试匹配curl几个小时后,我放弃了,只使用了这家伙的函数(见下面的链接)。工作得很有魅力


在Powershell中,您可以使用curl.exe而不是curl(是的,有不同的命令:)

也可以使用powershell 3中的Invoke RestMethod


有关powershell 3中Invoke RestMethod的更多详细信息,请访问:

curl的-F是一个多部分/表单数据帖子,因此我想大部分答案都是。。。不准确我最终下载了适用于windows的curl可执行文件,效果非常好!这不是OP要求的。抱歉@WarrenP,但他要求的是“与cURL命令等效的PowerShell”,即cURL.exe和包含的链接指向该问题的确切答案,并修复了他的问题您链接到的链接提供了一个可接受的Invoke RestMethod答案:这类事情最好作为对您的问题的编辑来完成。
curl.exe -i -F file=@file.txt http://www.website.com/put_file