Gibt es multipart / form-data-Parser in C # - (NO ASP)
-
28-09-2019 - |
Frage
Ich versuche nur, einen mehrteiliger Parser zu schreiben, aber die Dinge kompliziert zu werden und möchte fragen, ob jemand einen fertigen Parser in C # kennt!
Just klar zu machen, ich meinen eigenen „kleinen“ http-Server und Notwendigkeit, pars mehrteiliger Form-Daten zu schreiben!
Vielen Dank im Voraus, Gohlool
Lösung
I Open-Source ein C # Http bilden Parser hier .
Das ist etwas flexibler als das andere erwähnt, die auf CodePlex, da Sie es sowohl für die Multipart und Nicht-Multipart form-data
verwenden können, und auch gibt es Ihnen eine andere Form Parameter formatiert in einem Dictionary
Objekt.
Dies kann wie folgt verwendet werden:
Nicht-mehrt
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"]);
}
}
mehrt
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);
}
}
Andere Tipps
Ich habe einige Probleme mit Parsern hat, die auf Zeichenfolgenanalyse basiert vor allem bei großen Dateien fand ich es genügend Speicherplatz frei würde und nicht binäre Daten zu analysieren.
mit diesen Problemen fertig zu werden Ich habe Open Source meinem eigenen Versuch einer C # multipart / form-data-Parser hier
Überprüfen Sie die neue MultipartStreamProvider und ihre Unterklassen aus (das heißt MultipartFormDataStreamProvider). Sie können Ihre eigene Implementierung auch wenn keines der eingebauten Implementierungen erstellen für Sie geeignet Fall verwenden.
Mit Kern jetzt haben Sie Zugang zu einem IFormCollection von HttpContext.Request.Form verwendet wird.
Beispiel ein Bild zu speichern:
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);
}
Ich hatte ein ähnliches Problem, dass ich vor kurzem dank Anthony gelöst über http://antscode.blogspot.com/ für den Multipart-Parser.
(wie in REST WS mehrteiliger Form Post zu entschlüsseln)