我正在尝试编写一个多部分解析器,但事情变得复杂了,想问问是否有人知道C#中现成的解析器?
只是为了明确,我正在编写自己的“微型”http服务器,并需要解析多部分表单数据!
谢谢提前, Gohlool
我正在尝试编写一个多部分解析器,但事情变得复杂了,想问问是否有人知道C#中现成的解析器?
只是为了明确,我正在编写自己的“微型”http服务器,并需要解析多部分表单数据!
谢谢提前, Gohlool
我在这里开源了一个C# Http表单解析器(链接)。
与CodePlex上提到的另一个解析器相比,它稍微更加灵活,因为你可以同时用于Multipart和非Multipart的form-data
,并且它会将其他表单参数格式化成一个Dictionary
对象。
可以按以下方式使用:
非多部分
public void Login(Stream stream)
{
string username = null;
string password = null;
HttpContentParser parser = new HttpContentParser(stream);
if (parser.Success)
{
username = HttpUtility.UrlDecode(parser.Parameters["username"]);
password = HttpUtility.UrlDecode(parser.Parameters["password"]);
}
}
多部分
public void Upload(Stream stream)
{
HttpMultipartParser parser = new HttpMultipartParser(stream, "image");
if (parser.Success)
{
string user = HttpUtility.UrlDecode(parser.Parameters["user"]);
string title = HttpUtility.UrlDecode(parser.Parameters["title"]);
// Save the file somewhere
File.WriteAllBytes(FILE_PATH + title + FILE_EXT, parser.FileContents);
}
}
contentTypeMatch.Index
,但contentTypeMatch.Length
是错误的。对于第二个及其后续附件也不起作用(我已更改代码以支持它)。你能否建议该怎么做? - Be Brave Be Like UkraineHttpContentParser
中,还是在 HttpMultipartParser
中也会出现? - Lorenzo PolidoriSystem.ComponentModel.Annotations
,这导致Json也需要升级,最终完全破坏了我的项目。虽然这并不是你的错,但最终我还是没能使用它。 - crthompson现在有了Core,您可以使用HttpContext.Request.Form访问IFormCollection。
例如保存图片:
Microsoft.AspNetCore.Http.IFormCollection form;
form = ControllerContext.HttpContext.Request.Form;
using (var fileStream = System.IO.File.Create(strFile))
{
form.Files[0].OpenReadStream().Seek(0, System.IO.SeekOrigin.Begin);
form.Files[0].OpenReadStream().CopyTo(fileStream);
}
IFormCollection
属性。如果你在使用.NET Core,这非常棒且轻量级。 - Felipe Romero