Können Sie alternative Fileupload-Steuerelement für asp.net-mvc empfehlen?
-
05-07-2019 - |
Frage
Zur Zeit System.Web.UI.WebControls.FileUpload in unserer eigenen Kontrolle eingewickelt werden.
Wir haben Lizenzen für Telerik. Ich wollte wissen, ob jemand Erfahrung damit hatte oder könnte einen besseren vorschlagen?
Einige Kriterien, die von
gemessen werden- Validierung
- peformance
- mehr Dateien
- Lokalisierung ( Browse ist schwer)
- Sicherheit
Lösung
Persönlich, wenn Sie die Telerik Kontrollen haben würde ich ihnen eine Chance geben. Ich habe festgestellt, dass sie sehr nützlich sind, und die User Experience ist gut. Ihre Upload-Steuerung ist recht schön.
Andere Tipps
Ich habe gerade dieses in einer anderen Frage geschrieben, aber wenn Sie verwenden dieses ActiveX-Steuerelement können Sie Bilder schnell und effizient verarbeiten. Die Komponente wird die Größe tatsächlich die Bilder auf dem Client-Rechner vor ihnen senden. Dies reduziert unnötige Bandbreite und überträgt mehrere Bilder auf einmal.
Wir erweiterten die FileUploadControl einige Validierung hinzuzufügen. Wir schrieben auch unsere eigene Steuerung, die mehrere Dateien auf einmal hochgeladen werden können. Wir prüfen derzeit beide. Hoffentlich entscheiden wir auf der einen, ich würde es hassen, 2 verschiedene Upload-Kontrollen haben zu erhalten.
Schauen Sie sich Dean Brettle NeatUpload . Es ist im Grunde ein benutzerdefinierter Httphandler, die Dateien auf der Festplatte mit vielen zusätzlichen Konfigurierbarkeit Bächen. Es ist Open-Source und Dean ist ein absoluter Star für seine Nutzer zu unterstützen.
diese ein Check out:
Html-5 -Uploader
Drag-and-Drop mehrere Dateien auf Ihrer Webseite!
Link funktioniert nicht immer so ist es hier wieder: http: //www.igloolab .com / jquery-html5-Uploader /
.
Controller: (von meinem ursprünglichen Code geändert, hofft ich vergesse nicht etwas, aber es ist ziemlich klar)
<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
Dies ist die Ansicht (vergessen Sie nicht, Links zu CSS und 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>
Und meine 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;
}
Sie könnten versuchen, eine Flash-basierte Lösung, die Sie, was Text, Textfelder, Schaltflächen oder irgendetwas anderes als Teil Ihres eigenen Datei-Upload-Steuerelement angezeigt werden kann. Diese Lösungen typischerweise einen 1x1 Flash-Film setzen auf der Seite, die als Brücke wirkt zwischen JavaScript und Flash, so dass Javascript dynamisch Flash die Box Datei-Upload aufrufen können.
In einem aktuellen Projekt, habe ich FancyUpload zu tun dass genau.