Pregunta

Actualmente utilizamos System.Web.UI.WebControls.FileUpload envuelto en nuestro propio control.

Tenemos licencias para Telerik. Quería saber si alguien tenía experiencia con eso o podría sugerir una mejor?

Algunos criterios deben medirse mediante

  • validación
  • rendimiento
  • múltiples archivos
  • localización ( navegar es difícil)
  • seguridad
¿Fue útil?

Solución

Personalmente, si tienes los controles de Telerik, les daría una oportunidad. Descubrí que son muy útiles y que la experiencia del usuario es buena. Su control de carga es bastante bueno.

Otros consejos

Acabo de publicar sobre esto en otra pregunta , pero si usa Con este control ActiveX podrás procesar imágenes de forma rápida y eficiente. El componente realmente cambiará el tamaño de las imágenes en la máquina cliente antes de enviarlas. Esto reduce el ancho de banda innecesario y transfiere varias imágenes a la vez.

Extendimos FileUploadControl para agregar alguna validación. También escribimos nuestro propio control que permite cargar múltiples archivos a la vez. Actualmente estamos evaluando ambos. Esperamos que decidamos uno, odiaría tener 2 controles de carga diferentes para mantener.

Echa un vistazo a la NeatUpload de Dean Brettle . Es básicamente un HttpHandler personalizado que transmite archivos al disco con un montón de configuraciones adicionales. Es de código abierto y Dean es una estrella absoluta para apoyar a sus usuarios.

Echa un vistazo a esta:

Html-5 -Cargador

Arrastra y suelta varios archivos en tu página web

El enlace no siempre funciona así que aquí está de nuevo: http: //www.igloolab .com / jquery-html5-uploader /

.

Controlador: (modificado de mi código original, espero que no haya olvidado algo, pero está bastante claro)

     <HttpPost()> _
     Public Function Upload(uploadedFile As System.Web.HttpPostedFileBase) As ActionResult
        If uploadedFile IsNot Nothing Then 
            If uploadedFile.ContentLength > 0 Then

               Dim mimeType As String = Nothing 
                'Upload
                Dim PathFileName As String =   System.IO.Path.GetFileName(uploadedFile.FileName)

                 Dim path =  System.IO.Path.Combine(Server.MapPath("~/App_Data/Uploads"), PathFileName)

                If Not System.IO.Directory.Exists(Path) Then
                    System.IO.Directory.CreateDirectory(Path)
                End If

                Dim firstLoop As Boolean = True
                uploadedFile.SaveAs(path)                  
             Next
        End If
        Return Nothing
    End Function

Esta es la vista (no olvide los enlaces a css y js;))

     <h1>
            @SharedStrings.Upload</h1>
        <h2>
            @SharedStrings.UploadInformation</h2>
        <div id="dropbox">
        </div>
        <div id="upload">
        </div>
        <script type="text/javascript">

            $(function () {

                var fileTemplate = "<div id=\"{{id}}\">"; fileTemplate += "<div class=\"progressbar\"></div>"; fileTemplate += "<div class=\"preview\"></div>"; fileTemplate += "<div class=\"filename\">{{filename}}</div>"; fileTemplate += "</div>"; function slugify(text) { text = text.replace(/[^-a-zA-Z0-9,&\s]+/ig, ''); text = text.replace(/-/gi, "_"); text = text.replace(/\s/gi, "-"); return text; }
                $("#dropbox").html5Uploader({ onClientLoadStart: function (e, file) {
                    var upload = $("#upload"); if (upload.is(":hidden")) { upload.show(); }
                    upload.append(fileTemplate.replace(/{{id}}/g, slugify(file.name)).replace(/{{filename}}/g, file.name));
                }, onClientLoad: function (e, file) { /*$("#" + slugify(file.name)).find(".preview").append("<img src=\"" + e.target.result + "\" alt=\"\">");*/ }, onServerLoadStart: function (e, file) { $("#" + slugify(file.name)).find(".progressbar").progressbar({ value: 0 }); }, onServerProgress: function (e, file) { if (e.lengthComputable) { var percentComplete = (e.loaded / e.total) * 100; $("#" + slugify(file.name)).find(".progressbar").progressbar({ value: percentComplete }); } }, onServerLoad: function (e, file) { $("#" + slugify(file.name)).find(".progressbar").progressbar({ value: 100 }); } 
                }); 
            });
        </script>

Y mi css

 /*html 5 uploader*/
#dropbox 
{
/*picture where people would drag-drop their files to*/
 background-image:url(../Images/UploadToMedia.png);
 height:128px;
 margin-bottom:40px;
 margin-left:auto;
 margin-right:auto;
 background-repeat:no-repeat;
 margin-top:0;
 width:128px;
}

Puede probar una solución basada en flash que le permita mostrar cualquier texto, cuadro de texto, botones o cualquier otra cosa como parte de su propio control de carga de archivos. Estas soluciones suelen incluir una película flash 1x1 en la página que actúa como un puente entre javascript y flash, de modo que javascript puede llamar al cuadro de carga de archivos de flash de forma dinámica.

En un proyecto reciente, usé FancyUpload para hacer exactamente eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top