Próbuję przesłać plik w ASP.NET 5, ale dwa sposoby, które widziałem w Internecie, zawodzą. Z XMLHttpRequest tu jest mój serwer kodu po stronie:Załaduj plik ASP.NET 5
public async Task<ActionResult> UploadSWF()
{
StreamReader reader = new StreamReader(Request.Body);
var text = await reader.ReadToEndAsync();
return View();
}
[EDIT 1]: A mój po stronie klienta:
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);
}
Ale jedyną rzeczą, jaką mogę dostać z tego jest:
------ WebKitFormBoundaryX1h5stVbtaNe6nFw Content-Disposition: form-data; name = "upload"; filename = "data.swf" Content-Type: application/x-shockwave-flash CWS ;”
[EDIT 2]: Oto kod, jak uzyskać to:
public ActionResult UploadSWF()
{
Stream bodyStream = Context.Request.Body;
var sr = new StreamReader(bodyStream);
var test = sr.ReadToEnd();
return View();
}
Więc uzyskać nazwę pliku i typ zawartości, ale nie jego treści.
Ta odpowiedź https://stackoverflow.com/a/26445416/1203116 kopiuje strumień do pliku jednak część tworzenie pliku nie działa dla mnie, i don” wiem, co się dzieje, ale nic się nie dzieje. Więc próbowałem zrobić to samo z MemoryStream i otrzymałem pusty ciąg znaków.
Więc w końcu próbowałem inny sposób, przy użyciu IFormFile jak pokazano poniżej: https://github.com/aspnet/Mvc/blob/437eb93bdec0d9238d672711ebd7bd3097b6537d/test/WebSites/ModelBindingWebSite/Controllers/FileUploadController.cs Ten interfejs powinien być w Microsoft.AspNet.Http które dodałem do mojego projektu, ale nadal nie jestem w stanie go otworzyć. Nie widzę żadnego IFormFile w tym obszarze nazw.
[EDIT 1]: Pierwsza metoda Próbowałem jest za pomocą HttpPostedFileBase jakbym był używany w ASP.NET MVC 5, ale to nie działa w moim projekcie vNext. Zawsze miałem wyjątek MissingMethodException. Mój kod po stronie klienta było:
<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>
I w moim kontrolera:
public ActionResult UploadSWF(HttpPostedFileBase file)
{
return View();
}
Nie jestem pewien, czy to pomaga, ale spróbuj umieścić argument przesyłania HttpPostedFileBase na swoim pliku UploadSWF i sprawdź, czy nie jest on pusty. –
Próbowałem tego. W rzeczywistości był to pierwszy sposób, jaki chciałem zaimplementować, ale zawsze miałem wyjątek MissingMethodException. Żądanie nie może osiągnąć kontrolera metody z klasą
Być może powinieneś również dodać swój kod księgowania. –