从响应中提取附件

Extract attached file from response

根据Whitesource document,响应headers将有

Content-Type = application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Content-Disposition: attachment; filename=<product name>.xslx 

我想提取那个 xslx 文件,但是我不知道如何提取。我试过将响应写入文件,但我得到的只是一堆二进制字符。

Invoke-RestMethod -SkipCertificateCheck -Method Post -ContentType 'application/json' -Body $body -Uri "https://app.whitesourcesoftware.com/api/v1.3 | Out-File "abcd.csv"

我也试过在写入之前将响应转换为 csv,但这也不起作用。

Invoke-RestMethod -SkipCertificateCheck -Method Post -ContentType 'application/json' -Body $body -Uri "https://app.whitesourcesoftware.com/api/v1.3 | ConvertTo-CSV | Out-File "abcd.csv"

有什么想法吗?

经过一番挖掘,我意识到该文件存在于响应的 content 部分。我使用 Invoke-WebRequest 而不是 Invoke-RestMethod。这是我的脚本:

$response = Invoke-WebRequest -Method Post -ContentType 'application/json' -Body $body -Uri $server
[System.IO.File]::WriteAllBytes("report.xlsx", $response.content)

这会将附件写入名为 report.xlsx 的文件。