我有一个Web应用程序,可以处理HTML表单的POST,如下所示:
<form action="x" method="post" enctype="multipart/form-data">
<input name="xfa" type="file">
<input name="pdf" type="file">
<input type="submit" value="Submit">
</form>
注意,有两个type="file"
<input>
元素。
如何从PowerShell脚本编写POST脚本?我计划这样做是为了为服务创建一个简单的测试框架。
我找到了WebClient.UploadFile(),但它只能处理一个文件。
谢谢你的时间。
5条答案
按热度按时间wbgh16ku1#
我今天一直在用PowerShell制作多部分HTTP POST。希望下面的代码对你有帮助。
Invoke-RestMethod
需要PowerShell 3.0,但上面后面的链接中的代码显示了如何直接使用.NET进行HTTP POST,允许您在Windows XP中运行此功能。祝你好运!请告诉我你是否让它工作了。
wmomyfyw2#
这件事一直困扰着我,还没有找到一个满意的解决办法。虽然这里提出的要点可以做yob,它是不有效的情况下,大文件的传输。我写了一篇博客文章,提出了一个解决方案,基于.NET 4.5中的HttpClient类。如果这对你来说不是问题,你可以在下面的地址http://blog.majcica.com/2016/01/13/powershell-tips-and-tricks-multipartform-data-requests/检查我的解决方案
编辑:
干杯
jjjwad0x3#
在研究了multipart/form-data是如何构建的之后,我找到了解决问题的方法。很多帮助都是以http://www.paraesthesia.com/archive/2009/12/16/posting-multipartform-data-using-.net-webrequest.aspx的形式出现的。
然后,解决方案是根据该约定手动构建请求的主体。我已经离开了像正确的内容长度等细节。
以下是我现在使用的一个摘录:
n53p2ov04#
我已经将@akauppi的答案重新混合到一个更通用的解决方案中,一个cmdlet:
Get-ChildItem
获取管道输入以上传文件-Credential
参数-FilesKey
参数来指定文件上载部分的formdata键-WhatIf
-Verbose
日志记录可以这样称呼:
下面是完整cmdlet的代码:
htrmnn0y5#
-Form 选项
Power Shell 7.2+为多部分/表单数据添加了一个整洁的功能。从MS学习示例6:
但这个功能也有一些缺点。对我来说,缺乏一个选项来控制文件的MIME类型使它毫无用处。我必须以
application/pdf
的格式发送PDF,但PS将以octet-stream
的格式发送。使用.NET的灵活脚本
受MS Learn Example 5和各种问题中的答案的启发,我使用.NET类制作了自己的Power Shell脚本。我认为这是一个非常灵活和强大的脚本: