هل يمكنك التوصية بعنصر تحكم FileUpload بديل لـ asp.net-mvc؟
-
05-07-2019 - |
سؤال
يتم حاليًا استخدام System.Web.UI.WebControls.FileUpload المغلف في عنصر التحكم الخاص بنا.
لدينا تراخيص لTelerik.أردت أن أعرف إذا كان لدى أي شخص خبرة في ذلك أو يمكنه اقتراح تجربة أفضل؟
بعض المعايير التي يجب قياسها
- تصديق
- الأداء
- ملفات متعددة
- الموقع (تصفح صعب)
- حماية
المحلول
شخصيًا، إذا كان لديك أدوات التحكم في Telerik، فسأجربها.لقد وجدت أنها مفيدة للغاية، وتجربة المستخدم جيدة.التحكم في التحميل الخاص بهم جميل جدًا.
نصائح أخرى
لقد نشرت للتو عن هذا في سؤال آخر, ، ولكن إذا استخدمت عنصر تحكم ActiveX هذا، فستتمكن من معالجة الصور بسرعة وكفاءة.سيقوم المكون بالفعل بتغيير حجم الصور الموجودة على جهاز العميل قبل إرسالها.يؤدي هذا إلى تقليل عرض النطاق الترددي غير الضروري ونقل صور متعددة في وقت واحد.
قمنا بتوسيع FileUploadControl لإضافة بعض التحقق من الصحة.لقد كتبنا أيضًا عنصر التحكم الخاص بنا والذي يسمح بتحميل ملفات متعددة مرة واحدة.نقوم حاليا بتقييم كليهما.نأمل أن نقرر واحدًا، فأنا أكره أن يكون لدي عنصرين مختلفين للتحكم في التحميل للحفاظ عليهما.
تحقق من دين بريتل تحميل أنيق.إنه في الأساس HttpHandler مخصص يقوم بدفق الملفات إلى القرص مع الكثير من قابلية التكوين الإضافية.إنه مفتوح المصدر ويعتبر Dean نجمًا مطلقًا في دعم مستخدميه.
تحقق من هذا:
أتش تي أم أل-5-رافعقم بسحب وإسقاط ملفات متعددة على صفحة الويب الخاصة بك!
الرابط لا يعمل دائما لذا ها هو مرة أخرى: 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×1 على الصفحة والذي يعمل كجسر بين جافا سكريبت وفلاش بحيث يمكن لجافا سكريبت استدعاء مربع تحميل ملف الفلاش ديناميكيًا.
في مشروع حديث، استخدمت تحميل فانسي للقيام بذلك بالضبط.