从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中读取字符串和解析后的值。如果有一种表单-你需要执行的解析,但它仍然是可以做到的。希望这个例子将保存您的注意,那就是并非总是如此读取所有流作为一个字符串。