1

我正在尝试在 powershell 中处理多部分 GET 调用,然后将它包含的 zipfile 保存到磁盘。我可以执行这个:

$response = Invoke-RestMethod -Uri $reqUrl -Method Get -Headers $headers

然后回显文件名和内容。为了保存文件,我尝试了这个:

$response = Invoke-RestMethod -Uri $reqUrl -Method Get -Headers $headers -ContentType "multipart/form-data" -Outfile result.zip

这会引发错误(无效操作)。所以我尝试了这个:

$response = Invoke-RestMethod -Uri $reqUrl -Method Get -Headers $headers -ContentType "application/zip" -Outfile result.zip

这会创建一个名为的文件,该文件result.zip无效。我知道响应是多部分的,所以虽然这不会引发错误,但我对文件无效并不感到惊讶,因为它必须包含所有部分。

我环顾四周,但我发现的只是使用 Invoke-RestMethod 来POST处理多部分内容的方法。

这是我尝试打开生成的 zip 文件时出现的错误:

在此处输入图像描述

我也尝试如下解码结果,但结果相同。

$B64String = $response.resultObject 
Write-Host "resultObject size: $([Math]::Round($B64String.Length / 1Mb,2)) MiB"
$swDecode = [System.Diagnostics.Stopwatch]::StartNew()
$bytes = [System.Convert]::FromBase64String($B64String)
$swDecode.Stop()
Write-Host "Decoded size: $([Math]::Round($bytes.Count / 1Mb,2)) MiB"
Write-Output $bytes > $($response.fileName)
4

1 回答 1

0

我找到了答案

$response = Invoke-RestMethod -Uri $reqUrl -Method Get -Headers $headers  
$response | ConvertTo-Json
[IO.File]::WriteAllBytes($response.fileName, [System.Convert]::FromBase64String($response.resultObject))

于 2022-01-27T10:20:16.660 回答