7

我可以使用以下 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'] 发送?另外,如何查看服务器的响应?

4

4 回答 4

9

我认为应该是这样的:

$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。

于 2013-04-22T01:08:57.550 回答
4

在 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

于 2020-02-03T15:34:36.487 回答
0

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

于 2013-09-24T18:01:39.173 回答
-2

在使用 fiddler 尝试匹配 curl 几个小时后,我放弃了,只使用了这个家伙的功能(见下面的链接)。像魅力一样工作。

http://blog.majcica.com/2016/01/13/powershell-tips-and-tricks-multipartform-data-requests/

于 2018-04-25T00:17:58.737 回答