powershell invoke-restmethod multipart / form-data [英] powershell invoke-restmethod multipart/form-data
问题描述
我目前正在尝试使用REST API将文件上传到Web服务器。正如前面提到的,我使用PowerShell。与curl这没有问题。调用如下:
I'm currently trying to upload a file to a Webserver by using a REST API. And as mentioned I'm using PowerShell for this. With curl this is no problem. The call looks like this:
curl -H "Auth_token:"$AUTH_TOKEN -H "Content-Type:multipart/form-data" -X POST -F appInfo='{"name": "test","description": "test"}' -F uploadFile=@/test/test.test https://server/api/
但是对于使用Invoke-Restmethod命令将它导出到powershell,我完全无奈。就我的搜索,不可能使用Invoke-Restmethod。 https://www.snip2code.com/Snippet/396726/PowerShell -V3-Multipart-formdata-example
但是即使有Snipped我不够聪明,得到这个工作,因为我不想上传两个文件,而是一个文件和一些参数。
But I'm completely helpless when it comes to exporting this to powershell with a Invoke-Restmethod command. As far as I searched it is not possible to use the Invoke-Restmethod for this. https://www.snip2code.com/Snippet/396726/PowerShell-V3-Multipart-formdata-example But even with that Snipped I'm not smart enough to get this working since I don´t want to upload two files but instead one file and some arguments.
我会非常感谢,如果有人可以让我回到轨道上:o
谢谢!
I would be very thankful if someone could get me back on the track with this :o Thanks!
推荐答案
这应该是很直接。从此回答:
$Uri = 'https://server/api/';
$Headers = @{'Auth_token'=$AUTH_TOKEN};
$FileContent = [IO.File]::ReadAllText('C:\test\test.test');
$Fields = @{'appInfo'='{"name": "test","description": "test"}';'uploadFile'=$FileContent};
Invoke-RestMethod -Uri $Uri -ContentType 'multipart/form-data' -Method Post -Headers $Headers -Body $Fields;
您可能想使用 [IO.File] :: ReadAllBytes
You may want to use [IO.File]::ReadAllBytes()
if the file isn't a text file.
如果您正在上传一个巨大的文件,这也可能无法正常工作。
This also may not work well if you're uploading a huge file.
这篇关于powershell invoke-restmethod multipart / form-data的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!