2012-09-04 19 views
5

ASP.NET Web APIでファイルアップロードのファイル拡張子を検証したい(注:これは完全な検証方法ではありません。ASP.NET Web APIでファイルアップロードを検証する方法

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

答えて

7

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) 
    } 
} 
です
関連する問題