2012-09-04 3 views
5

ASP.NET 웹 API에서 파일 업로드의 파일 확장명을 확인하려고합니다 (참고 :이 방법은 완전한 유효성 검사 방법이 아닙니다.)ASP.NET 웹 API에서 파일 업로드의 유효성을 검사하는 방법

게시 된 파일을 처리하기 위해 MultipartFormDataStreamProvider을 사용하고 있습니다. 공급자가 파일을 처리하기 전에 Request.Content.Headers.ContentDisposition이 null이므로 (ReadAsMultipartAsync 통해) 요청의 파일 이름을 확인하는 가장 좋은 위치는 어디입니까?

답변

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) 
    } 
} 
관련 문제