2016-07-02 131 views
2

我們有一個php站點,它可以將圖片上傳到服務器,使用正確的命名方式上傳簡單的jpg文件。問題是,我們需要一次上傳幾百個數據,但一次只能接受1個,重命名並上傳。我已經完成了PS中的文件操作,但未能上傳。通過Powershell將文件上傳到HTTP

PHP上傳相關的部分(據我可以告訴)是這樣的:<form name='' id='' enctype='multipart/form-data' method='POST' action='/picture_upload.php' target='_self' onsubmit="default_on_submit(event)">

我檢查了谷歌,在這裏相關話題的歡迎,並得到了這一點:

$uri = "http://example.com/" 
$pwd = ConvertTo-SecureString 'MyPassword' -AsPlainText -Force 
$cred = New-Object Management.Automation.PSCredential ('myuser', $pwd) 
$contentType = "multipart/form-data" 
    $body = @{ 
     "FileName" = Get-Content($uploadPath) -Raw 
    } 
    Invoke-WebRequest -Uri $uri -Method Post -ContentType $contentType -Body $body 

我有選中$uploadPath並且這是正確的C:\Folder\file.jpg。我使用憑證登錄到可以通過GUI上傳這些圖片的網站。

我試過在POST和PUT之間切換,沒有任何變化。

替換http://example.comhttp://example.com/file.jpg也沒有提供差異。不確定,這是使用POST的正確方法。

我們在公司有McAffe網關,但我用繞過它的用戶運行腳本,所以它不會造成這種情況。

我得到的當前錯誤消息是: 「Invoke-WebRequest:底層連接已關閉:接收方發生意外錯誤。」

任何幫助將不勝感激!對不起,如果這已經解決了,我只是錯過了一個入口!

P.S.我也試過這 - Powershell script to Upload log file from local system to http URL,並返回Exception calling "UploadFile" with "3" argument(s): "An exception occurred during a WebClient request."

回答

4

晚了一年,所以你可能並不需要的答案了,但什麼工作對我來說是:

Invoke-RestMethod -Uri $uri -Method Post -InFile $uploadPath -UseDefaultCredentials 

礦需要使用窗口auth作爲當前登錄的用戶... From this other answer,看起來您可以在某些情況下使用-red,並且必須在其他人中構建授權標頭。