10

マルチパートパーサーを作成しようとしていますが、状況が複雑になり、C#で準備ができているパーサーを誰かが知っているかどうかを尋ねたいと思います。

明確にするために、私は独自の「小さな」httpサーバーを作成しており、マルチパートフォームデータも解析する必要があります。

よろしくお願いします、Gohlool

4

5 に答える 5

27

ここでC#Httpフォームパーサーをオープンソース化しました。

form-dataこれは、Multipartと非Multipartの両方に使用でき、オブジェクトでフォーマットされた他のフォームパラメータを提供するため、CodePlexにある他の1つよりもわずかに柔軟性があり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);
    }
}
于 2012-01-20T16:11:41.733 に答える
10

文字列の解析に基づくパーサーでいくつかの問題が発生しました。特に大きなファイルでは、メモリが不足し、バイナリデータの解析に失敗することがわかりました。

これらの問題に対処するために、私はここでC#multipart/form-dataパーサーでの私自身の試みをオープンソース化しました

詳細については、ここで私の答えを参照してください。

于 2013-01-25T00:08:23.460 に答える
1

新しいMultipartStreamProviderとそのサブクラス(つまり、MultipartFormDataStreamProvider)を確認してください。組み込みの実装がユースケースに適していない場合は、独自の実装を作成することもできます。

于 2014-04-20T20:24:58.360 に答える
1

Coreを使用すると、HttpContext.Request.Formを使用してIFormCollectionにアクセスできるようになります。

画像の保存例:

        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);
        }
于 2017-02-19T23:51:21.640 に答える
0

マルチパートパーサーについてhttp://antscode.blogspot.com/にあるAnthonyのおかげで、最近解決した同様の問題がありました。

FlexからWCFRESTストリームへのファイルのアップロードの問題(REST WSでマルチパートフォームの投稿をデコードする方法)

于 2011-03-27T19:41:40.847 に答える