Domanda

Attualmente utilizza System.Web.UI.WebControls.FileUpload racchiuso nel nostro controllo.

Abbiamo licenze per Telerik. Volevo sapere se qualcuno aveva esperienza con quello o poteva suggerirne uno migliore?

Alcuni criteri da misurare in

  • convalida
  • peformance
  • più file
  • localizzazione ( sfoglia è difficile)
  • sicurezza
È stato utile?

Soluzione

Personalmente, se hai i controlli di Telerik, darei loro una possibilità. Ho scoperto che sono molto utili e l'esperienza dell'utente è buona. Il loro controllo del caricamento è abbastanza carino.

Altri suggerimenti

Ho appena pubblicato questo in un'altra domanda , ma se usi questo controllo ActiveX sarà in grado di elaborare le immagini in modo rapido ed efficiente. Il componente ridimensionerà effettivamente le immagini sul computer client prima di inviarle. Ciò riduce la larghezza di banda non necessaria e trasferisce più immagini contemporaneamente.

Abbiamo esteso FileUploadControl per aggiungere un po 'di validazione. Abbiamo anche scritto il nostro controllo che consente di caricare più file contemporaneamente. Attualmente stiamo valutando entrambi. Speriamo che ne decidiamo uno, odierei avere 2 diversi controlli di upload da mantenere.

Dai un'occhiata al NeatUpload . È fondamentalmente un HttpHandler personalizzato che trasmette i file su disco con un sacco di ulteriore configurabilità. È open source e Dean è una star assoluta per supportare i suoi utenti.

Dai un'occhiata a questo:

Html-5 -Uploader

Trascina e rilascia più file sulla tua pagina web!

Il collegamento non funziona sempre, quindi eccolo di nuovo: http: //www.igloolab .com / jquery-HTML5-uploader /

.

Controller: (modificato dal mio codice originale, spero di non aver dimenticato qualcosa, ma è abbastanza chiaro)

     <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

Questa è la vista (non dimenticare i collegamenti a 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 i miei 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;
}

Potresti provare una soluzione basata su flash che ti consente di visualizzare qualsiasi testo, caselle di testo, pulsanti o qualsiasi altra cosa come parte del tuo controllo di caricamento dei file. Queste soluzioni in genere inseriscono un filmato flash 1x1 sulla pagina che funge da ponte tra javascript e flash in modo tale che javascript possa chiamare dinamicamente la casella di caricamento dei file di flash.

In un recente progetto, ho usato FancyUpload per fare esattamente quello.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top