从HttpListenerRequest获取表单数据
我这是从被张贴发起HttpListenerRequest。我需要知道如何让发布表单值+上传的文件。有谁知道一个例子,在这样做是为了我自己吗?我有一个谷歌的周围,但没有发现任何东西
-------------------------------------------------------------------------------------------------------------------------
1. 最主要的是要明白的是,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 (System.IO.StreamReader 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中读取字符串和解析后的值。如果有一种表单-你需要执行的解析,但它仍然是可以做到的。希望这个例子将保存您的注意,那就是并非总是如此读取所有流作为一个字符串。