2012-08-07 56 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