Nicht in der Lage, upload-Datei per Ajax.BeginForm() asynchron
Ich versuche, eine Datei hochladen mittels Ajax.BeginForm(), aber es ist nicht der Arbeit aus.
Meiner Sicht enthält:
@using (Ajax.BeginForm("UploadFile", null, new AjaxOptions { HttpMethod="POST", UpdateTargetId = "result" }, new { enctype = "multipart/form-data" }))
{
<label id="lblUploadNewFile" for="fileUploadControl">Upload New File</label>
<input type="file" name="fileToUpload" id="fileUploadControl"/>
<input id="btnFileUpload" type="submit" value="Upload" />
<span id="result" />
}
und den entsprechenden Controller ist:
[HttpPost]
public string UploadFile(FormCollection formData)
{
HttpPostedFileBase file=null;
try
{
file = Request.Files[0];
}
catch { }
if ( file!=null && file.ContentLength > 0)
{
file.SaveAs(string.Concat(
AppDomain.CurrentDomain.BaseDirectory,
Path.GetFileName(file.FileName)));
return "Successfully Uploaded";
}
else
{
return "Upload Failed, please try again.";
}
}
Das problem ist, dass es die Datei hochladen, aber nicht mehr tun, jede asynchrone Beiträge, wenn ich Sie entfernen jquery.unobtrusive-ajax.js
. Stattdessen, es bedeutet eine vollständige post-back.
Wenn ich jquery.unobtrusive-ajax.js
in meinem view, Sie tut es asynchron, aber es ist nicht das senden einer Datei hochladen, die in form von Daten. Keine Datei wird an den server gesendet Request.Files[]
.
- Es ist nicht möglich, mit Ajax aus offensichtlichen Gründen: Sie bauen konnte Seite hat-uploads jede zugängliche Datei auf die Besucher Dateisystem auf den server-ohne ihn.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie keine Dateien hochladen mittels AJAX. Dies wird nicht unterstützt. Wenn Sie wollen, um zu tun, dass man entweder einige Datei-upload-plugin wie
Uploadify
oder Blueimp-Datei Hochladen oder verwenden Sie denHTML 5 File API
, wenn der client-browser unterstützt.Können Sie dies tun, ohne zusätzliche Bibliotheken.
Stieß ich auf dieses kleine hack, der behebt es schön
Gefunden http://www.acnenomor.com/1762557p1/c-mvc3-ajaxbeginform-to-upload-file-not-working
http://www.acnenomor.com/1762557p1/c-mvc3-ajaxbeginform-to-upload-file-not-working
ist nicht mehr; es war eine scraper-site kopieren von Stack Overflow, die Sie wirklich gefunden dieser Beitrag.Dies können Sie tun, um diese Arbeit zu bekommen:
Holen Sie sich jquery.form Bibliothek von nuget und importieren Sie Sie in Ihre cshtml-Datei.Erstellen Sie Ihr Formular mit @Html.BeginForm.
dann unten in Ihrer form schreiben dieses Skript ajax-ify Ihre form:
Mit diesen Schritten können Sie eine Datei auf den controller.
sehr einfache Lösung:
beachten Sie die neue
{ enctype = "multipart/form-data" }
was sagt das Rasiermesser Seite zum hinzufügen von
enctype
dass kann passierenHttpPostedFileBase
Glück:).