none
Cargar Archivos Multiples con C# .net Framework 3.5 RRS feed

  • Pregunta

  • Cordial Saludo a todos los colaboradores y excelente profesionales de la comunidad.

    Quería preguntar de que manera ustedes realizan un cargue de archivos masivos con C# .net, yo venía utilizando una librería que se llama Uploadify, sin embargo esta librería utilizaba Flash Player y como sabemos esta dejo de funcionar apartir del 1 de enero de 2021. Adjunto Codigo que se utilizaba(Uploadify). En el div id="fuFiles" es donde se realiza el cargue de imagenes.

    <script type="text/javascript">
            $(document).ready(function () {
                $('#fuFiles').uploadify({
                    'uploader': 'image/uploadify.swf',
                    'script': 'FileUploads.aspx',
                    'cancelImg': 'image/cancel.png',
                    'auto': 'true',
                    'multi': 'true',
                    'buttonText': 'Seleccione...',
                    'queueSizeLimit': 50
                });
            });
        </script>
    
    </head>
        <body>
            <form id="form1" runat="server">
                            <div class = "rm_content_paso2">
                                <h2>Paso 2 - Cargar y validar im&aacute;genes</h2>
                                <h4>Seleccione las im&aacute;genes que desea subir. Y espere a que se complete el proceso de cargue. Luego Presione Validar</h4>
    <!-- Aqui va el boton de cargar imagenes con Uploadify-->
                                <div id= "div_paso2" runat="server" visible = "false">
                                    <div id="fuFiles">
                
                                    </div>                          
                            
                                    <br />
                                    <div>
                                        <asp:Button ID="btnValidateImages" runat="server" Text="Validar" CssClass = "btns"
                                            onclick="btnValidateImages_Click" />
                                    </div>
                                    <div>
                                            <asp:Label ID="lblSummaryFiles" runat="server"></asp:Label>
                                    </div>
                                </div>
                            </div>

    Por ende tuve que realizar un desarrollo con JS pero el cargue de archivos se realiza más lento de lo que se venia trabajando con la librería. Adjunto desarrollo realizado:

    <script runat="server" >
    
          void BtnSelectImgs_Click(object sender, System.EventArgs e) 
          {
             
    			HttpFileCollection hfc = Request.Files;
    			for (int i = 0; i < hfc.Count; i++)
    			{
    				HttpPostedFile hpf = hfc[i];
    				if (hpf.ContentLength > 0)
    				{
    				  string file = System.IO.Path.GetFileName(Request.Files[i].FileName);
    				  string dependencia = Session["Dependencia"].ToString().Replace('.', '_');
    				  string directoryTemp = System.Configuration.ConfigurationManager.AppSettings["path_images"] + dependencia + @"\";
    				  try
    				  {
    					  if (!System.IO.Directory.Exists(directoryTemp))
    					  {
    						  System.IO.Directory.CreateDirectory(directoryTemp);
    					  }
    					  hpf.SaveAs(directoryTemp + file);
    
    				  }
    				  catch
    				  {
    
    				  }
    
    				}
    			}
          }
       </script>
    
        <script type="text/javascript">
    
            $(document).ready(function () {
                $("#fileUpload").on("change", function () {
                    var files = $(this).get(0).files;
                    var formData = new FormData();
                    for (var i = 0; i < files.length; i++) {
                        formData.append(files[i].name, files[i]);
                    }
    
           // Ejecutar el evento click del boton BtnSelectImgs
                    $("#BtnSelectImgs").trigger("click"); 
    
                })
            })
    
        </script>
     
    
    </head>
        <body>
            <form id="form1" runat="server" enctype="multipart/form-data">
                            <div class = "rm_content_paso2">
                                <h2>Paso 2 - Cargar y validar im&aacute;genes</h2>
                                <h4>Seleccione las im&aacute;genes que desea subir. Y espere a que se complete el proceso de cargue. Luego Presione Validar</h4>
                                <div id= "div_paso2" runat="server" visible = "false">
    								<div id="fuFiles">
    									<asp:Button ID="BtnSelectImgs" runat="server" Text="Seleccione..." CssClass="btns OcultaButton" OnClick="BtnSelectImgs_Click"  />
    									<div id="fuFiles2" class="file-upload-container">
    										<input type="file" id="fileUpload" multiple runat="server" />
    										<label for="fileUpload" class="btns">Seleccione...</label>
    									</div>
    								</div>                          
                            
                                    <br />
                                    <div>
                                        <asp:Button ID="btnValidateImages" runat="server" Text="Validar" CssClass = "btns"
                                            onclick="btnValidateImages_Click" />
                                    </div>
                                    <div>
                                            <asp:Label ID="lblSummaryFiles" runat="server"></asp:Label>
                                    </div>
                                </div>
                            </div>

    Como no tengo acceso al aspx.cs me toca realizarlo todo desde el aspx.

    Agradezco de antemano su colaboración


    • Editado LoverTech jueves, 11 de febrero de 2021 16:34
    jueves, 11 de febrero de 2021 16:32

Respuestas

  • Hola, viendo tu código entiendo que es un WebForms. Existe un control llamado FileUpload el cual tienes un ejemplo en el enlace que te he proporcionado. Échale un vistazo a ver si cunmple con tus expectativas. Saludos


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Propuesto como respuesta EricRRModerator viernes, 12 de febrero de 2021 23:12
    • Marcado como respuesta EricRRModerator lunes, 15 de febrero de 2021 17:55
    jueves, 11 de febrero de 2021 17:27
    Moderador

Todas las respuestas

  • Hola,

    Gracias por levantar tu consulta en los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    jueves, 11 de febrero de 2021 17:16
    Moderador
  • Hola, viendo tu código entiendo que es un WebForms. Existe un control llamado FileUpload el cual tienes un ejemplo en el enlace que te he proporcionado. Échale un vistazo a ver si cunmple con tus expectativas. Saludos


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Propuesto como respuesta EricRRModerator viernes, 12 de febrero de 2021 23:12
    • Marcado como respuesta EricRRModerator lunes, 15 de febrero de 2021 17:55
    jueves, 11 de febrero de 2021 17:27
    Moderador
  • Hola Sergio

    Gracias por responder, en este caso  no se si pueda utilizar el FileUpload pues este control no permite multiples archivos en framework .net 3.5, si no estoy mal creo que permite a partir de .net 4+.
    Es posible optimizar el codigo de los Script? o hacer que se ejecute un FTP como fillezilla desde un boton?

    Gracias por tu tiempo y quedo atento
    jueves, 11 de febrero de 2021 23:28