Ich versuche, eine Datei in ASP.NET 5 hochzuladen, aber die zwei Möglichkeiten, die ich im Internet gesehen habe, scheitern. Mit XMLHttpRequest hier ist mein Server-Seite Code:Datei hochladen ASP.NET 5
public async Task<ActionResult> UploadSWF()
{
StreamReader reader = new StreamReader(Request.Body);
var text = await reader.ReadToEndAsync();
return View();
}
[EDIT 1]: Und meine Client-Seite:
var client = new XMLHttpRequest();
function upload()
{
var file = document.getElementById("uploadfile");
var formData = new FormData();
formData.append("upload", file.files[0]);
client.open("post", "/Home/UploadSWF", true);
//client.setRequestHeader("Content-Type", "multipart/form-data");
client.setRequestHeader("Content-Type", "application/x-shockwave-flash");
client.send(formData);
}
Aber das einzige, was ich von diesem erhalten kann, ist:
------ WebKitFormBoundaryX1h5stVbtaNe6nFw Content-Disposition: Formulardaten; name = "hochladen"; filename = "data.swf" Content-Type: application/x-shockwave-flash CWS ;“
[EDIT 2]: Hier ist der Code, wie ich diese:
public ActionResult UploadSWF()
{
Stream bodyStream = Context.Request.Body;
var sr = new StreamReader(bodyStream);
var test = sr.ReadToEnd();
return View();
}
So habe ich den Namen der Datei und den Content-Typ, aber nicht deren Inhalt.
Diese Antwort https://stackoverflow.com/a/26445416/1203116 den Stream in eine Datei für mich die Dateierstellung Teil jedoch ist das Kopieren nicht funktioniert, I don‘ Ich weiß, was vor sich geht, aber nichts passiert. Also habe ich das gleiche mit einem MemoryStream gemacht und ich habe eine leere Zeichenfolge bekommen.
So endlich habe ich versucht, einen anderen Weg, mit IFormFile wie hier gezeigt: https://github.com/aspnet/Mvc/blob/437eb93bdec0d9238d672711ebd7bd3097b6537d/test/WebSites/ModelBindingWebSite/Controllers/FileUploadController.cs Diese Schnittstelle in Microsoft.AspNet.Http sein sollte, das ich mein Projekt hinzugefügt haben, aber ich bin immer noch nicht in der Lage, darauf zuzugreifen. Ich kann keine IFormFile in diesem Namespace sehen.
[EDIT 1]: Die erste Methode, die ich versucht habe, ist durch HttpPostedFileBase mit wie ich in ASP.NET MVC 5 verwendet wurde, aber es funktioniert nicht in meinem vNext Projekt. Ich habe immer eine MissingMethodException erhalten. Mein Code auf Client-Seite war:
<form action="/home/UploadSWF" method="POST" enctype="multipart/form-data">
<input type="file" name="file" accept=".swf, application/x-shockwave-flash/*">
<input type="submit" name="submit" />
</form>
Und in meinem Controller:
public ActionResult UploadSWF(HttpPostedFileBase file)
{
return View();
}
Nicht sicher, ob es hilft, aber versuchen Sie, ein Upload-Argument HttpPostedFileBase zu Ihrem UploadSWF und sehen, ob es nicht null ist. –
Ich habe das schon mal probiert. Eigentlich war es der erste Weg, den ich implementieren wollte, aber ich bekam immer eine MissingMethodException. Die Anforderung kann den Methodencontroller mit dem klassischen
Vielleicht sollten Sie auch Ihren Buchungscode hinzufügen. –