Um Dateien asynchron mit jQuery hochzuladen, verwenden Sie die folgenden Schritte:
Schritt 1 Öffnen Sie im Projekt den NuGet-Manager und fügen Sie das Paket hinzu (jQuery-Dateiupload (Sie müssen es nur im Suchfeld eingeben, es wird angezeigt und installiert.)) URL: https://github.com/blueimp/jQuery-File-Upload
Schritt 2 Fügen Sie die folgenden Skripte in die HTML-Dateien ein, die bereits durch das obige Paket hinzugefügt wurden:
jquery.ui.widget.js
jquery.iframe-transport.js
jquery.fileupload.js
Schritt 3 Schreiben Sie den Datei-Upload-Steuerelement gemäß dem folgenden Code:
Schritt 4 Schreiben Sie eine JS-Methode "uploadFile" wie unten angegeben:
function uploadFile(element) {
$(element).fileupload({
dataType: 'json',
url: '../DocumentUpload/upload',
autoUpload: true,
add: function (e, data) {
// Code zum Implementieren beim Auswählen einer Datei.
// data stellt die Dateidaten dar.
// Der folgende Code löst die Aktion im MVC-Controller aus.
data.formData =
{
files: data.files[0]
};
data.submit();
},
done: function (e, data) {
// Nach dem Hochladen der Datei.
},
progress: function (e, data) {
// Fortschritt.
},
fail: function (e, data) {
// Fehleroperation.
},
stop: function () {
// Code für den Abbruchvorgang.
}
});
};
Schritt 5 Rufen Sie im fertigen Funktionselement die Dateiübertragung an, um den Prozess gemäß dem folgenden Code zu starten:
$(document).ready(function()
{
uploadFile($('#upload'));
});
Schritt 6 Schreiben Sie den MVC-Controller und die Aktion wie unten angegeben:
public class DocumentUploadController : Controller
{
[System.Web.Mvc.HttpPost]
public JsonResult upload(ICollection files)
{
bool result = false;
if (files != null || files.Count > 0)
{
try
{
foreach (HttpPostedFileBase file in files)
{
if (file.ContentLength == 0)
throw new Exception("Nulle Länge der Datei!");
else
// Code zum Speichern einer Datei.
}
}
catch (Exception)
{
result = false;
}
}
return new JsonResult()
{
Data=result
};
}
}
0 Stimmen
Es gibt verschiedene fertige Plugins zum Hochladen von Dateien für jQuery. Das Durchführen solcher Upload-Hacks ist keine angenehme Erfahrung, daher verwenden die Leute lieber fertige Lösungen. Hier sind einige: - JQuery File Uploader - Mehrere Datei-Upload-Plugin - Mini Mehrfachdatei-Upload - jQuery-Datei-Upload Sie können nach weiteren Projekten auf NPM (unter Verwendung des Schlüsselworts "jquery-plugin") oder auf Github suchen.
78 Stimmen
Du erhältst nur den Dateinamen, weil deine Variable Dateiname den Wert von $('#file') erhält, nicht die Datei, die im Eingabefeld liegt
0 Stimmen
Ich bin auf einige wirklich leistungsstarke jQuery-basierte Datei-Upload-Bibliotheken gestoßen. Schau sie dir an: 1. Plupload - Dokumentation: plupload.com/docs 2. jQuery File Upload - Dokumentation: github.com/blueimp/jQuery-File-Upload 3. FineUploader - Dokumentation: docs.fineuploader.com
22 Stimmen
Hier ist einer: http://blueimp.github.io/jQuery-File-Upload/ - HTML5 Ajax-Upload - Eleganter Ausweichmodus auf iFrames für nicht unterstützte Browser - Mehrfachdatei-Async-Upload Wir haben es verwendet und es funktioniert großartig. (Hier finden Sie die Dokumentation)
3 Stimmen
Überprüfen Sie auch dies: stackoverflow.com/questions/6974684/…, hier wird erklärt, wie man es über jQuery erreichen kann.
2 Stimmen
@Jimmy Wie würde er die Datei erhalten, die im Eingabefeld liegt?
0 Stimmen
@Sergio haben dir keine der 34 Antworten geholfen? Wenn ja, dann schätze es bitte und markiere es als akzeptiert.