Ich arbeite an MVC 5-Anwendung. Und ich muss mehrere Dateien hochladen.Asp.net MVC 5 Ajax Multi-Datei-Upload benötigen möglicherweise Wertanbieter, Vorschläge?
Was ich weiß, ist HttpPostedFile und HttpPostedFileBase Klassen können eine Datei erhalten. Aber meine Bedingung ist, dass ich mehrere Dateien gleichzeitig hochladen muss.
Meine Frage ist,
1) Da gibt es keine Unterstützung für mehrere Datei-Upload mit Ajax, muss ich Wertanbieter schreiben, dass meine Aktion machen, mehrere Dateien zu akzeptieren?
2) Wenn ich benutzerdefinierten Wertanbieter implementiere, was sollte ich für Parameter in Aktionsmethode verwenden (sollte es IEnumerable<HttpPostedFileBase> f
sein)? Weil ich das tat und ich bekomme null
.
aktualisieren
Hier ist meine Ajax-Aufruf von View
var files = e.target.files;
if (window.FormData !== undefined) {
var fd = new FormData();
for (x = 0; x < files.length; x++) {
fd.append("file" + x, files[x]);
}
// fd.append("fawad", "ali");
$.ajax({
type: "POST",
url: "/FileOp/FileUpload",
contentType: false,
processData: false,
data: fd,
sucess: function (result) {
// alert();
},
error: function (xhr, status, p3, p4) {
alert(xhr.responseText);
}
});
Und hier meine Aktionsmethode ist (Httppost)
[HttpPost]
public object FileUpload(IEnumerable<HttpPostedFileBase> file)
Dank
nutzen könnten Sie brauchen keinen eigenen Wert-Anbieter. Sie brauchen nur eine Eigenschaft in Ihrem View-Modell (oder einen Parameter in Ihrer POST-Methode, IEnumerable XXX), wobei 'XXX' der Name Ihrer Dateieingabe ist (und ich nehme an, dass Sie' FormData' verwenden, wie in [diese Antwort] (http://stackoverflow.com/questions/29293637/how-to-append-whole-set-of-model-to-formdata-and-obtain-it-in-mvc/29293681#29293681) zu upload die Dateien mit Ajax –
@StephenMuecke "Name Ihrer Dateieingabe". nicht möglich, es kann x Anzahl der Dateien sein. so erste Datei ist 'file1', zweite ist' file2' und so weiter – Alex
@StephenMuecke hier mein Controller aufrufen ajax $ Schnipsel ({ Typ: "POST", url: "/ FileOp/Fileupload", content: false, verarbeite: false, Daten: fd, sucess: function (result) { // Alarm(); }, Fehler: Funktion (xhr, Status, p3, p4) { Warnung (xhr.responseText); } }); – Alex