我正在从常规文件切换到执行上传的zip文件,并被告知我需要使用此格式的标头 - Content-Type:application / zip。
因此,我可以通过curl正确上传我的文件:
curl --verbose --header "Content-Type: application/zip" --data-binary @C:\Junk\test.zip "http://client.xyz.com/submit?username=test@test.com&password=testpassword&job=test"
但是,当我编写一个简单的PowerShell脚本来执行相同的操作时,我遇到了问题 - 数据未加载。我不知道如何返回一个好的错误信息,所以我不知道细节,但数据没有进入底线。
$FullFileName = "C:\Junk\test.zip"
$wc = new-object System.Net.WebClient -Verbose
$wc.Headers.Add("Content-Type: application/zip")
$URL = "http://client.xyz.com/submit?username=test@test.com&password=testpassword&job=test"
$wc.UploadFile( $URL, $FullFileName )
# $wc.UploadData( $URL, $FullFileName )
我尝试使用UploadData而不是UploadFile,但这似乎也不起作用。
谢谢, 西尔维亚
答案 0 :(得分:2)
我不一定有解决方案,但我认为问题在于您尝试使用WebClient对象上传二进制文件。您很可能需要UploadData方法,但我认为您必须将zip文件运行到要上载的字节数组中。我不确定是不是最重要的。
如果还没有,请务必查看此课程和方法的MSDS文档:http://msdn.microsoft.com/en-us/library/system.net.webclient_methods.aspx
答案 1 :(得分:1)
现在我再次查看它,我认为你需要:$wc.Headers.Add("Content-Type", "application/zip")
因为集合是key/value paired。看看这个问题:
此外,如果您仍然遇到问题,则可能需要添加用户代理标头。我认为curl拥有它自己。
$userAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2;)"
$wc.Headers.Add("user-agent", $userAgent)