2012-08-07 523 views
1

我使用filehost备份云中的硬盘。这个文件主机提供了一个API来做到这一点,但我无法让它在PowerShell上运行。在PowerShell中通过HTTP POST上传文件

在他们的API的网站(http://code.google.com/p/filecloud/wiki/Uploading),他们声称,“我们通过HTTP POST请求上传的文件”,所以我用我信赖POST_Request功能:

function POST_Request ($url,$parameters) { 
$client = New-Object System.Net.WebClient 
$contents = [Text.Encoding]::UTF8.GetString(($client.UploadValues($url,$parameters))) 
return $contents 
} 

由于他们网站声称他们需要发送2个参数才能上传(我帐户和文件的一种id),因此我无法在System.Net.WebClient对象中使用UploadFile

总之,我的问题是:我如何传递一个参数(ID)和文件通过POST上传? (也许与UploadFile将做到这一点)

非常感谢提前!

回答

1

通常情况下,这些放在NameValueCollection IIRC中,NameValueCollection实例作为“values”参数传递给UploadValues()。您正在使用$parameters。这是传递给你还是你创造它?无论哪种方式,如果它是一个NameValueCollection,请使用Add方法为所需参数添加名称/值对。

+0

是的,那正是''$ parameters''是: '$ parameters = New-Object Collections.Specialized.NameValueCollection'; '$ parameters [“Filedata”] = $ file'; '$ parameters [“id”] = $ MyID' – mechantid 2012-08-07 16:02:41

+0

我调用'POST_Request'后,发现异常: '调用带有“2”参数的“UploadValues”的异常:“远程服务器返回错误:(415)Unsupported Media Type。“' – mechantid 2012-08-07 16:05:45

+0

这种情况下$ file是什么? – 2012-08-07 16:10:04