6

ASP.NET Web APIでファイルアップロードのファイル拡張子を検証したい(注:これは完全に証明された検証方法ではないことを認識しています)。

MultipartFormDataStreamProviderPOSTされたファイルを処理するためにを使用しています。Request.Content.Headers.ContentDispositionプロバイダーが(を介して)ファイルを処理する前にnullであるためReadAsMultipartAsync、要求のファイル名を検証するのに最適な場所はどこですか?

4

1 に答える 1

8

MultipartFormDataStreamProviderから継承し、GetLocalFileName(コンテンツをストリームに読み込んだ後に実行)またはGetStream(コンテンツをストリームに読み込む前に実行)のいずれかをオーバーライドできます。どちらの場合も、headers.ContentDisposition.FileName

public class CustomMultipartFormDataStreamProvider : MultipartFormDataStreamProvider
{
    public CustomMultipartFormDataStreamProvider(string path)
        : base(path)
    {
    }

    public override string GetLocalFileName(System.Net.Http.Headers.HttpContentHeaders headers)
    {
        //validate headers.ContentDisposition.FileName as it will have the name+extension
        //then do something (throw error, continue with base or implement own logic)
    }

    public override Stream GetStream(HttpContent parent, System.Net.Http.Headers.HttpContentHeaders headers)
    {
        //validate headers.ContentDisposition.FileName as it will have the name+extension

        //then do something (throw error, continue with base or implement own logic)
    }
}
于 2012-09-04T09:09:55.553 に答える