2012-09-04 12 views
5

Quiero validar la extensión de archivo de las cargas de archivos en ASP.NET Web API (nota: me doy cuenta de que este no es un método de validación a prueba completa).Cómo validar las cargas de archivos en ASP.NET Web API

Estoy usando el MultipartFormDataStreamProvider para procesar el archivo POSTed. Dado que Request.Content.Headers.ContentDisposition es nulo antes de que el proveedor procese el archivo (a través del ReadAsMultipartAsync), ¿cuál es el mejor lugar para validar el nombre de archivo de la solicitud?

Respuesta

7

Puede heredar de MultipartFormDataStreamProvider y anular GetLocalFileName (se ejecuta después de leer el contenido en la transmisión) o GetStream (se ejecuta antes de leer el contenido en la transmisión). En ambos casos, tiene acceso a 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) 
    } 
} 
Cuestiones relacionadas