服务端代码
# 监听 IP 地址和端口
$ip = "127.0.0.1"
$port = 8080
# 设置上传目录
$uploadDir = "D:\uploads"
# 创建 HttpListener 对象并启动监听
$listener = New-Object System.Net.HttpListener
$listener.Prefixes.Add("http://$ip`:$port/")
$listener.Start()
Write-Host "Listening on http://$ip`:$port/"
# 循环处理客户端请求
while ($listener.IsListening) {
$context = $listener.GetContext()
# 处理 POST 请求
if ($context.Request.HttpMethod -eq "POST") {
$filename = $context.Request.Headers["X-FileName"]
$filepath = Join-Path $uploadDir $filename
$length = $context.Request.ContentLength64
$content = New-Object byte[] $length
$index = 0
while($index -lt $length) {
$read = $context.Request.InputStream.Read($content, 0, $content.Length)
if($read -eq 0) {
break
}
$index +=$read
}
# 写入文件
[System.IO.File]::WriteAllBytes($filepath, $content)
# 返回上传结果
$response = $context.Response
$response.StatusCode = 200
$response.StatusDescription = "OK"
$response.Close()
$listener.Stop()
} else {
$response = $context.Response
$response.StatusCode = 404
$response.StatusDescription = "not found"
$response.Close()
$listener.Stop()
}
}
客户端代码
# 发送 POST 请求上传二进制文件
$uri = "http://127.0.0.1:8080"
$filePath = "D:\1.txt"
Invoke-WebRequest -Uri $uri -Method POST -Headers @{"X-FileName" = "1.txt"} -InFile $filePath
pause
标签:content,http,response,listener,context,上传,powershell
From: https://www.cnblogs.com/wubenhui/p/17372166.html