gpt4 book ai didi

c# - 从 HttpListenerRequest 获取表单数据

转载 作者:可可西里 更新时间:2023-11-01 08:41:39 26 4
gpt4 key购买 nike

我有一个从 html <form> 发起的 HttpListenerRequest那是张贴的。我需要知道如何获取发布的表单值+上传的文件。有谁知道一个例子可以节省我自己做这件事的时间?我用谷歌搜索了一下,但没有找到任何有用的东西。

最佳答案

要了解的主要事情是 HttpListener 是一个处理 http 请求的低级工具。所有发布数据都在 HttpListenerRequest.InputStream 流中。假设我们有这样一个表单:

<form method=\"post\" enctype=\"multipart/form-data\"><input id=\"fileUp\" name=\"fileUpload\" type=\"file\" /><input type=\"submit\" /></form>

现在我们要查看发布数据。让我们实现一个方法来做到这一点:

public static string GetRequestPostData(HttpListenerRequest request)
{
if (!request.HasEntityBody)
{
return null;
}
using (System.IO.Stream body = request.InputStream) // here we have data
{
using (var reader = new System.IO.StreamReader(body, request.ContentEncoding))
{
return reader.ReadToEnd();
}
}
}

上传一些文件并查看结果:

Content-Disposition: form-data; name="somename"; filename="D:\Test.bmp" 
Content-Type: image/bmp
...here is the raw file data...

接下来假设我们有没有上传文件的简单表单:

<form method=\"post\">First name: <input type=\"text\" name=\"firstname\" /><br />Last name: <input type=\"text\" name=\"lastname\" /><input type=\"submit\" value=\"Submit\" /></form>

让我们看看输出:

firstname=MyName&lastname=MyLastName

组合表单结果:

Content-Disposition: form-data; name="firstname"
My Name
Content-Disposition: form-data; name="somename"; filename="D:\test.xls"
Content-Type: application/octet-stream
...raw file data...

如您所见,在简单形式的情况下,您可以只读取 InputStream 以字符串化并解析 post 值。如果有更复杂的形式——你需要执行更复杂的解析,但它仍然可以完成。希望这些示例可以节省您的时间。请注意,将所有流作为字符串读取并不总是这种情况。

关于c# - 从 HttpListenerRequest 获取表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5197579/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com