Czy istnieje parser multipart/form-data w C # - (Brak ASP)

Próbuję napisać Parser wieloczęściowy, ale sprawy się komplikują i chcę zapytać, czy ktoś zna gotowy parser w C#!

Żeby było jasne, piszę swój własny" malutki " serwer http i muszę pars multipart formularz-DANE też!

Z góry dzięki, Gohlool

Author: Gohlool, 2010-10-07

5 answers

I open-sourced C# Http form parsertutaj .

Jest nieco bardziej elastyczny niż ten drugi, o którym mowa w CodePlex, ponieważ można go używać zarówno dla wieloczęściowych, jak i nie-wieloczęściowych form-data, a także daje inne parametry formularza sformatowanego w obiekcie Dictionary.

Można go użyć w następujący sposób:

Non-multipart

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"]);
    }
}

Multipart

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);
    }
}
 27
Author: Lorenzo Polidori,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-03 17:13:23

Miałem pewne problemy z parserem, które są oparte na parsowaniu łańcuchów, szczególnie w przypadku dużych plików, które stwierdziłem, że zabraknie mu pamięci i nie przetworzy danych binarnych.

Aby poradzić sobie z tymi problemami, otworzyłem własną próbę parsera C# multipart / form-data TUTAJ

Zobacz moją odpowiedź TUTAJ Aby uzyskać więcej informacji.

 10
Author: Jake Woods,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:55:14

Sprawdź nowy MultipartStreamProvider i jego podklasy (np. MultipartFormDataStreamProvider). Możesz również utworzyć własną implementację, jeśli żadna z wbudowanych implementacji nie jest odpowiednia dla Twojego przypadku użycia.

 1
Author: user3285954,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-20 20:24:58

Z Core teraz masz dostęp do IFormCollection za pomocą HttpContext.Prośba.Forma.

Przykład zapisu obrazu:

        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);
        }
 1
Author: user6788933,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-19 23:51:21

Miałem podobny problem, który niedawno rozwiązałem dzięki Anthony ' emu w http://antscode.blogspot.com / dla parsera wieloczęściowego.

Wgrywanie pliku z Flex do WCF problemy z REST Stream (jak dekodować wieloczęściowy formularz post w REST WS)

 0
Author: Ed Sinek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:29:36