Можете ли вы порекомендовать альтернативный элемент управления FileUpload для asp.net-mvc? - PullRequest
7 голосов
/ 31 октября 2008

В настоящее время используется System.Web.UI.WebControls.FileUpload, завернутый в наш собственный элемент управления.

У нас есть лицензии на Telerik. Я хотел знать, имел ли кто-нибудь опыт с этим или мог бы предложить лучший?

Некоторые критерии для измерения

  • проверка
  • Peformance
  • несколько файлов
  • локализация ( просмотр сложно)
  • безопасность

Ответы [ 6 ]

3 голосов
/ 31 октября 2008

Лично, если у вас есть контроль Telerik, я бы дал им шанс. Я обнаружил, что они очень полезны, и пользовательский опыт хороший. Их управление загрузкой довольно хорошее.

2 голосов
/ 31 октября 2008

Я только что написал об этом в другом вопросе , но если вы используете этот элемент управления ActiveX, вы сможете обрабатывать изображения быстро и эффективно. Компонент фактически изменит размеры изображений на клиентском компьютере перед их отправкой. Это уменьшает ненужную пропускную способность и передает несколько изображений одновременно.

1 голос
/ 09 ноября 2011

Проверьте это:

HTML-5-Uploader

Перетащите несколько файлов на свою веб-страницу!

Ссылка не всегда работает, поэтому она снова здесь: http://www.igloolab.com/jquery-html5-uploader/

.

Контроллер: (модифицировано из моего исходного кода, надеюсь, я что-то не забыл, но это довольно ясно)

     <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

Это представление (не забудьте ссылки на css и 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>

и мой 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;
}
1 голос
/ 24 февраля 2009

Проверьте у Дина Бреттла NeatUpload . Это в основном пользовательский HttpHandler, который транслирует файлы на диск с множеством дополнительных настроек. Это открытый исходный код, и Дин - абсолютная звезда для поддержки своих пользователей.

1 голос
/ 31 октября 2008

Мы расширили FileUploadControl, чтобы добавить некоторую проверку. Мы также написали наш собственный элемент управления, который позволяет загружать сразу несколько файлов. В настоящее время мы оцениваем оба. Надеюсь, мы выберем один, я бы не хотел иметь 2 разных элемента управления загрузкой для поддержки.

0 голосов
/ 31 октября 2008

Вы можете попробовать флэш-решение, которое позволяет отображать любой текст, текстовые поля, кнопки или что-либо еще как часть вашего собственного элемента управления загрузкой файлов. Эти решения обычно помещают на страницу флэш-фильм 1x1, который служит мостом между javascript и flash, так что javascript может динамически вызывать окно загрузки файла flash.

В недавнем проекте я использовал FancyUpload , чтобы сделать именно это.

...