【发布时间】:2017-08-23 12:41:55
【问题描述】:
我正在尝试创建一个基本的 Powershell 脚本来通过 http 共享文件,我从互联网上找到的一些示例中复制了代码。 我的代码或多或少是这样的:
$listener = New-Object Net.HttpListener
$listener.Prefixes.Add("http://+:8000/")
$listener.Start()
$response.Headers.Add("Content-Type","text/plain")
$buffer = [Text.Encoding]::UTF8.GetBytes((GC (Join-Path $Pwd ($context.Request).RawUrl)))
$response.ContentLength64 = $buffer.Length
$response.OutputStream.Write($buffer, 0, $buffer.Length)
$response.Close()
$Context.Response.Close()
$listener.Stop()
我能够获取该文件,但它没有下载为二进制文件,例如当我尝试下载 Zip 文件时,新/下载的文件比原始文件大。我猜这已经转换成ascii了。 如何保留原始文件格式?
我想我应该替换以下几行,但哪些是正确的,可以让我以二进制格式获取文件?
$response.Headers.Add("Content-Type","text/plain")
$buffer = [Text.Encoding]::UTF8.GetBytes((GC (Join-Path $Pwd ($context.Request).RawUrl)))
我只有一个有一个基本的 http 文件服务器来允许我获取一些 'zip'、'iso' 文件..
提前致谢。
【问题讨论】:
-
我认为这是因为如果响应标头中的内容类型:您将其设置为 text/plain。要使用二进制表示,请将其设置为 application/octet-stream
标签: .net file powershell http httplistener