domingo, 9 de septiembre de 2012

Subir muchos archivos con FileUpload o JQuery en ASP.NET

En este pequeño post explicare como subir muchos archivos con FileUpload o JQuery en ASP.NET.
He puesto 4 controles tipo FileUpload y un boton en la pagina, el codigo para subir los archivos al servidor esta escrito en el evento Click del boton.
Para este proyecto descargamos JQuery.js y jQuery.MultiFile.js del sitio JQuery multiple-file-upload plugin site.
El tamaño limite por defecto es 4 mb pero podemos subir archivos de mayor tamaño cambiando la configuracion en el web.config.
El diseño de la pagina sera mas o menos el siguiente:
como se ve hay controles tipo File Upload y el resto que son buttons y label. El codigo html es el siguiente:
<form id="form1" runat="server">
<div>
<asp:FileUpload ID="FileUpload1" runat="server" />
<br />
<asp:FileUpload ID="FileUpload2" runat="server" />
<br />
<asp:FileUpload ID="FileUpload3" runat="server" />
<br />
<asp:FileUpload ID="FileUpload4" runat="server" />
</div>         
  
<asp:Button ID="btnUpload" runat="server" 
            onclick="btnUpload_Click" 
            Text="Upload Files"/><br /><br />
<asp:Label ID="lblMessage" runat="server" Text=""></asp:Label>
<div>
<p>Upload Files Using JQuery</p>
<asp:FileUpload ID="FileUploadJquery" 
                runat="server" 
                class="multi"/>
<br /><br />
<asp:Button ID="btnJqueryMultipleFiles" 
            runat="server" Text="Upload Files Using Jquery" 
            onclick="btnJqueryMultipleFiles_Click"/>
</div>
</form>
No olviden agregar los 2 javascripts que les mencione arriba esos iran en su proyecto:
Los scripts los agregan despues del head como sigue:
<head runat="server">
    <title></title>
    <script src="jquery.js" type="text/javascript"></script>
    <script src="jquery.MultiFile.js" type="text/javascript"></script>
   
</head>
agregan este namespace en el codigo:
using System.IO;
este codigo es para una subida normal:
HttpFileCollection uploads = Request.Files;
        for (int fileCount = 0; fileCount < uploads.Count; fileCount++)
        {
            HttpPostedFile uploadedFile = uploads[fileCount];
            string fileName = Path.GetFileName(uploadedFile.FileName);
            if (uploadedFile.ContentLength > 0 )
            {
                uploadedFile.SaveAs(Server.MapPath("~/Files/") + fileName);
                lblMessage.Text += fileName + " Uploaded 
"; } }
y el codigo de abajo es para una subida con JQuery(lo colocan ambos codigos dentro del evento click):
HttpFileCollection uploads = Request.Files;
        for (int fileCount = 0; fileCount < uploads.Count; fileCount++)
        {
            HttpPostedFile uploadedFile = uploads[fileCount];
            string fileName = Path.GetFileName(uploadedFile.FileName);
            if (uploadedFile.ContentLength > 0)
            {
                uploadedFile.SaveAs(Server.MapPath("~/Files/") + fileName);
                lblMessage.Text += fileName + "Uploaded 
"; } }
Y al ejecutar nuestro codigo saldra asi:
vamos a la carpeta files de nuestro proyecto y ahi se encontraran los archivos que hayamos subido, y si lo hacen con el boton de JQuery saldra igual solo que para no ahcer pesado el gif lo probe con el primero =)

1 comentario:

  1. Saludos
    Con este codigo,¿Como puedo comprobar que en cada fileupload se haya cargado o seleccionado un archivo por el usuario?

    Gracias

    ResponderEliminar