2017-02-22 6 views
3

Я пытаюсь использовать командный элемент PowerShell Invoke-RestMethod, чтобы отправить изображение на URL-адрес. Вот мои команды:Как использовать Invoke-RestMethod для загрузки jpg

$usercreds = Get-Credential 
$pic = Get-Content \\server\share\pic.jpg 
$uri = http://website/sub/destination 

Invoke-RestMethod -uri $uri -Method Put -Body $pic -ContentType 'image/jpg' -Credential $usercreds 

Я получаю сообщение об ошибке: «файл не является допустимым файлом изображения.» Я также попытался использовать Invoke-WebRequest с тем же результатом. Веб-сервер не наш, и техник на их стороне сказал, что он использует завиток, но мы не знаем, как и нет ли Linux-бокса. Есть что-то, что мне не хватает? Я могу открыть jpg без проблем, чтобы он не был поврежден или что-то еще.

Я попытался это, но сервер кричал на меня: Код Using PowerShell Invoke-RestMethod to POST large binary multipart/form-data

Ошибка:

PS C:\Windows\system32> Invoke-WebRequest -uri $uri -Method Put -Body $pic -ContentType 'image/jpg' -Credential $usercreds 
Invoke-WebRequest : {"error":{"message":"the file is not a valid image file"},"data":[],"meta":"error"} 
At line:1 char:1 
+ Invoke-WebRequest -uri $uri -Method Put -Body $pic -ContentType 'imag ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException 
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand 
+0

Что означает _элемент на меня_ означает. Как это не сработало? $ pic - это строковый массив с разделителями строки, а не то, что ожидается для изображения. – Matt

+0

Он сказал мне: удаленный сервер ответил на ошибку: (405) Метод не разрешен. Я передал ему прямой путь к картинке, и это дало мне ту же ошибку. – user3494277

+0

Можете ли вы показать нам _exactly_, что вы пробовали, чтобы сгенерировать эту ошибку? Я знаю, что код, который у вас здесь, не работает. Я не знаю, что вам сказать о коде, который мы не видим. – Matt

ответ

4

Попробуйте использовать -Infile параметр. Get-Content интерпретирует ваш файл массивом строк и просто разбирает вещи.

$usercreds = Get-Credential 
$picPath = "\\server\share\pic.jpg" 
$uri = http://website/sub/destination 

Invoke-WebRequest -uri $uri -Method Put -Infile $picPath -ContentType 'image/jpg' -Credential $usercreds 
+0

Если это правда и работает, это должно быть обманом. Было бы неплохо узнать, что случилось с ошибкой OP. – Matt

+0

Он сказал, что «файл не является допустимым файлом изображения». Полностью логичен с использованием 'Get-Content' – TToni

+0

Он также сказал, что он попробовал метод, который вы показываете, и получил ошибку. – Matt