【发布时间】:2019-02-16 02:15:00
【问题描述】:
我正在尝试使用 PowerShell commandlet Invoke-RestMethod 将图片发布到 url。这是我的命令:
$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,结果相同。 Web 服务器不是我们的,他们那边的技术人员说使用 curl,但我们不知道如何使用,也没有 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
【问题讨论】:
-
对我大喊大叫是什么意思。那怎么行不通? $pic 是一个换行符分隔的字符串数组,而不是图片所期望的。
-
它告诉我:远程服务器返回一个错误:(405)方法不允许。我将图片的直接路径传递给它,这给了我同样的错误。
-
您能确切地向我们展示一下您尝试了什么导致了该错误吗?我知道你在这里的代码不起作用。对于我们看不到的代码,我不知道该告诉你什么。
-
PS C:\Windows\system32> Invoke-RestMethod -uri $uri -Method Put -Body $pic -ContentType 'image/jpg' -Credential $usercreds Invoke-RestMethod : {"error": {"message":"该文件不是有效的图像文件"},"data":[],"meta":"error"} At line:1 char:1 + Invoke-RestMethod -uri $uri -Method Put -Body $pic -ContentType 'imag ... + + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
-
谢谢。请edit将这些细节放入您的问题中。 cmets 中的代码很糟糕。
标签: powershell