Question

Je suis juste essayer d'écrire un analyseur multipart, mais les choses se complique et que vous voulez demander si quelqu'un sait d'un analyseur prêt en C #!

Juste pour faire clair, je suis en train d'écrire mon propre « petit » serveur http et le besoin de Pars-données multipart forme aussi!

Merci à l'avance, Gohlool

Était-ce utile?

La solution

I open-sourced un C # Http forme analyseur .

Ceci est un peu plus souple que l'autre mentionné qui est sur CodePlex, puisque vous pouvez l'utiliser pour les multipart et non multipart form-data, et aussi vous donne d'autres paramètres de forme formatée dans un objet Dictionary.

Ceci peut être utilisé comme suit:

non multipartie

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

Autres conseils

J'ai eu quelques problèmes avec l'analyseur qui sont basés sur l'analyse des chaînes en particulier avec des fichiers volumineux je trouve qu'il n'y aurait plus de mémoire et ne parviennent pas à analyser les données binaires.

Pour faire face à ces problèmes que j'ai ouvert ma propre source tentative C # multipart / form-data analyseur ici

Voir ma réponse pour plus d'informations.

Découvrez la nouvelle MultipartStreamProvider et ses sous-classes (à savoir MultipartFormDataStreamProvider). Vous pouvez créer votre propre implémentation trop si aucun des construit dans les implémentations conviennent pour que vous utilisez le cas.

Avec noyau vous avez maintenant accès à un IFormCollection en utilisant HttpContext.Request.Form.

Exemple enregistrement d'une image:

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

J'ai eu un problème similaire que j'ai récemment résolu grâce à Anthony sur http://antscode.blogspot.com/ pour l'analyseur multipart.

Uploading fichier de Flex aux problèmes WCF REST flux (comment décoder après forme multipart dans REST WS)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top