Pergunta

Atualmente usando System.Web.UI.WebControls.FileUpload envolto em nosso próprio controle.

Temos licenças para Telerik. Eu queria saber se alguém tinha experiência com isso ou poderia sugerir um melhor?

Alguns critérios para ser medido por

  • validação
  • peformance
  • vários arquivos
  • localização ( browse é difícil)
  • segurança
Foi útil?

Solução

Pessoalmente, se você tem os controles Telerik Eu lhes daria um tiro. Descobri que eles são muito úteis, e a experiência do usuário é bom. Seu controle de upload é bastante agradável.

Outras dicas

Acabei de publicar sobre este em outra pergunta , mas se você usar este controle ActiveX que você será capaz de processar imagens de forma rápida e eficiente. O componente vai realmente redimensionar as imagens na máquina cliente antes de enviá-los. Isso reduz largura de banda e transferências desnecessárias várias imagens ao mesmo tempo.

Nós estendemos a FileUploadControl para adicionar alguma validação. Também escreveu o nosso próprio controle que permite que múltiplos arquivos sejam enviados ao mesmo tempo. Estamos avaliando atualmente ambos. Espero que decidir sobre um, eu odiaria ter 2 controles de upload diferentes para manter.

Confira Dean Brettle NeatUpload . É basicamente um costume HttpHandler que transmite os arquivos para o disco com cargas de configurabilidade extra. É open source e Dean é uma estrela absoluta para apoiar seus usuários.

Verificar este para fora:

HTML-5 -Uploader

Arrastar e soltar vários arquivos na sua página web!

Fazer a ligação nem sempre funciona assim aqui está ele novamente: http: //www.igloolab .com / jquery-html5-carregador /

.

Controlador: (modificado a partir do meu código original, espero que eu não esqueci alguma coisa, mas é 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 é a View (não se esqueça links para css e 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>

E o meu 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;
}

Você poderia tentar uma solução baseada em flash que permite exibir qualquer texto, caixas de texto, botões, ou qualquer outra coisa, como parte de seu próprio controle de upload de arquivos. Estas soluções normalmente colocar um filme flash 1x1 na página que funciona como uma ponte entre javascript e flash de modo que javascript pode chamar caixa de upload de arquivos de flash de forma dinâmica.

Em um projeto recente, eu usei FancyUpload fazer exatamente isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top