Есть ли какой-либо многокартский / форм-анализатор данных в C # - (нет ASP)
-
28-09-2019 - |
Вопрос
Я просто пытаюсь написать мультипартный парсер, но все осложненные и хотят спросить, знает ли кто-нибудь из готового парсера в C #!
Просто чтобы сделать ясно, я пишу свой собственный «крошечный» HTTP-сервер и надо аналорировать разворотный форма данные тоже!
Заранее спасибо, gohlool
Решение
Я открытый анализатор формата C # # здесь.
Это немного более гибкое, чем упомянутое другое, которое находится на CODEPLEX, так как вы можете использовать его для умноченного, так и для неискратки 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);
}
}
Другие советы
У меня были некоторые проблемы с анализатором, которые основаны на разборе String, особенно с большими файлами, которые я обнаружил, что он будет выходить из памяти и не удается разбирать двоичные данные.
Чтобы справиться с этими проблемами, я открывающую поставленную мою собственную попытку аналонтонного / формованного анализатора C # здесь
Смотри мой ответ здесь за дополнительной информацией.
Ознакомьтесь с новым многокартеромпроводом и его подклассами (т.е. многопартный форматрампровидер). Вы также можете создать свою собственную реализацию, если ни один из встроенных реализаций подходит для вас, использует случай.
С ядром теперь у вас есть доступ к IFORMCOLLECT, с помощью httpcontext.request.form.
Пример сохранения изображения:
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);
}
У меня была похожая проблема, которую я недавно решил благодаря Энтони в http://antscode.blogspot.com/ для многопартного анализатора.
Загрузка файла из Flex в WCF Rest Stream (как декодировать Multipart Form Post в покое WS)