【发布时间】:2020-12-14 09:01:07
【问题描述】:
我有一个用于测试返回 base64 编码图像的 API 的脚本。我目前的解决方案是这样的。
$e = (curl.exe -H "Content-Type: multipart/form-data" -F "image=@clear.png" localhost:5000)
$decoded = [System.Convert]::FromBase64CharArray($e, 0, $e.Length)
[io.file]::WriteAllBytes('out.png', $decoded) # <--- line in question
Get-Content('out.png') | Format-Hex
这可行,但我希望能够在 PowerShell 中本地编写字节数组,而不必从 [io.file] 获取源代码。
我的 尝试在 PowerShell 中写入 $decoded 都导致写入 integer 字节值的字符串编码列表。 (例如)
42
125
230
12
34
...
你如何正确地做到这一点?
【问题讨论】:
-
你已经做得很好了。
[IO.File]::WriteAllBytes()是在 PowerShell 中将字节写入文件的正确方法。 -
为什么您不想在 Powershell 中“本地”编写? PS 或多或少是建立在 .Net 之上的,所以使用 .Net 方法是非常好的和标准的。
-
不确定,请随时纠正我,但我认为您的问题可能更恰当地表述为
How do you do this with PowerShell Cmdlets?-- my ~28¢ -
我认为“惯用”是您要寻找的形容词,而不是“本机”。
-
@thomasb 我知道这是旧的,但有些人想在 powershell 中不使用 IO.File 编写的原因是使用 IO.File 在 Powershell 受限模式下不起作用,这在某些高安全环境。不过,下面接受的答案将在受限模式下工作。
标签: powershell