Gestionar HttpPostedFileAJAX
Hasta el momento hemos aprendido muchas de las propiedades del FileUpload AJAX... pero
¿cuándo vamos a guardar un fichero?, ¿cómo podemos aplicar un filtro de tamañao máximo?,
¿cómo sé cuando se está subiendo un fichero o es simplemente una llamada normal?
Tras conocer qué es el
HttpPostedFileAJAX, ahora conoceremos las propiedades y métodos que tenemos
para usarlo correctamente:
-
IsRequesting: indica si se está haciendo una petición debido al FileUpload AJAX. La petición
puede ser porque se está subiendo un fichero o porque se está borrando.
-
IsPosting: indica que se está subiendo un fichero debido al FileUpload AJAX.
-
IsDeleting: indica que se va a borrar un fichero debido al FileUpload AJAX.
-
PostedFile: apunta al HttpPostedFileAJAX que el FileUpload AJAX está subiendo en ese momento.
-
Guardar el PostedFile: tenemos 3 opciones a la hora de guardar el PostedFile, en ninguna de ellas
debe usarse "server.MapPath(...)", pues ya lo hace automáticamente el control:
-
SaveAs(string path): guarda el fichero en el path especificado (directorio + nombre de fichero).
Su resultado es idéntico al SaveAs del clásico FileUpload.
-
Save(): guarda el fichero en la raíz de nuestra aplicación con el nombre original.
-
SaveAs(string directoryPath, string FileName): guarda el fichero en el directorio específicado
(directoryPath) y con un nombre especificado (FileName). Una función como ésta se echa de menos
en el clásico FileUpload
En el ejemplo vamos a guardar un fichero que debe ser una imagen GIF de menos de 5KB en el directorio
"temp" ubicado en la raíz de nuestra aplicación.
Code.aspx
<cc1:FileUploaderAJAX ID="FileUploaderAJAX1" runat="server" MaxFiles="5" />
Code.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
if (FileUploaderAJAX1.IsPosting)
this.managePost();
}
private void managePost()
{
HttpPostedFileAJAX pf = FileUploaderAJAX1.PostedFile;
if ((pf.Type == HttpPostedFileAJAX.fileType.image) && pf.ContentLength <= 5 * 1024)
FileUploaderAJAX1.SaveAs("~/temp", pf.FileName);
}