我正在尝试将文件上传到网址。我尝试过这两种方法:
Invoke-RestMethod -Uri $uploadUrl -Method Put -Headers $uploadHdrs -InFile $uploadFilePath
Invoke-RestMethod -Uri $uploadUrl -Method Put -body $uploadFileBody -Headers $uploadHdrs
我收到错误:
Invoke-RestMethod : You must write ContentLength bytes to the request stream
before calling [Begin]GetResponse.
如果我添加-TransferEncoding
参数,我会收到来自服务器的错误说不支持。
我可以做些什么来包含内容长度?
答案 0 :(得分:1)
我认为您需要使用其他命令,例如Invoke-WebRequest或甚至更好直接从PowerShell调用.NET this或WebClient.UploadFile
()方法
虽然REST方法可能概念包含上传文件,但这并不意味着Invoke-WebRequest命令已经过测试,可以支持您的方案。我建议进入较低级别(如WebClient),因为我们知道已经测试了更多场景(由较大的.NET团队),并且WebClient上有各种各样的方法来支持特定场景。
您可能会发现有关如何从PowerShell调用这些方法的一个示例是.UploadData
P.S。您获得的有关请求流的消息来自更低级别的.NET API,但WebClient更易于使用,应该正确设置ContentLength并且希望是"恰到好处& #34;为了你的需要。