私はmultipartデータを受け取るWebApiメソッドを持っています。現在の実装では、MultipartMemoryStreamProviderを使用してコンテンツを受信します。C#到着時にMultiPartの応答内容を読み取る
他のものより先に特定の部分が受信されていることを確認したいと思います(ファイル内容の前にファイルハッシュとも呼ばれます)。残念ながら、私がフレームワークについて説明できることから、HttpContentMultipartExtensionsはMimeMultipartParserをHttpContentのレスポンスストリームにインスタンス化します... MimeMultipartParserは、提供されたStreamProviderを使用してデータが到着すると新しいストリームをインスタンス化しますが、通知/パーサーが前のストリームから次のストリームに切り替わると、
イベントを使用することで、ファイルの内容が到着する前にファイルのハッシュをキューに入れ、ファイルの内容をファイルにポンピングし、次のファイルのハッシュ/コンテンツが到着している間にハッシュを確認できます。
残念ながら、私が見ているすべての例とコードでは、コンテンツストリームが完成した後でしかアクセスできないことを示唆しています。 (私はMimeMultipartBodyPartParserのParseBufferが返されたMimeBodyPartを返すことを知っていますが、プライベートなMultipartReadAsyncCompleteから呼び出されたように見えるので、アクセスする方法はありませんでした)
私に何か不足していますか?より良い方法がありますか?
コードなしでは何も言い難いです。 –
@RustamUmarovこのコードは、https://forums.xamarin.com/discussion/18649/best-practice-to-upload-image-selected-to-a-web-api(など、MultipartMemoryStreamProviderのすべての検索結果とほぼ同じです。 2番目のメッセージ)、https://jamessdixon.wordpress.com/2013/10/01/handling-images-in-webapi/(最後のコードスニペット)、および数十のSO応答。 –
現時点では、ストリームが完了したときにイベントハンドラ/非同期デリゲートを含めるために、HttpContentMultipartExtensionsとMimeMultipartParserのスタック全体を実装する必要があると私は想定しています。私はマイクロソフト社のコードを再実装するのは巨大なファンではない(私にはバグ修正のアップデートがないので)...しかし、私はサードパーティ製のライブラリも見つけていない。誰かが私が逃した何かを指摘して、組み込みの機能を使用すれば幸せになれます。 –