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

War es hilfreich?

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

Siehe meine Antwort für weitere Informationen.

Ü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.

Hochladen Datei von Flex zu WCF REST-Stream Problemen

(wie in REST WS mehrteiliger Form Post zu entschlüsseln)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top