¡Ayúdanos a traducir esta Web!
English | Castellano

Cómo usar el FileUpload AJAX

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.


Add


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);
}