mam ten formularz moim zdaniem:Przesyłanie plików za pomocą ASP.Net MVC - pobierz nazwę, ale bez strumienia pliku, co robię źle?
<!-- Bug (extra 'i') right here-----------v -->
<!-- was: <form method="post" enctype="mulitipart/form-data" action="/Task/SaveFile"> -->
<form method="post" enctype="multipart/form-data" action="/Task/SaveFile">
<input type="file" id="FileBlob" name="FileBlob"/>
<input type="submit" value="Save"/>
<input type="button" value="Cancel" onclick="window.location.href='/'" />
</form>
i ten kod w moim kontrolera:
public ActionResult SaveFile(FormCollection forms)
{
bool errors = false;
//this field is never empty, it contains the selected filename
if (string.IsNullOrEmpty(forms["FileBlob"]))
{
errors = true;
ModelState.AddModelError("FileBlob", "Please upload a file");
}
else
{
string sFileName = forms["FileBlob"];
var file = Request.Files["FileBlob"];
//'file' is always null, and Request.Files.Count is always 0 ???
if (file != null)
{
byte[] buf = new byte[file.ContentLength];
file.InputStream.Read(buf, 0, file.ContentLength);
//do stuff with the bytes
}
else
{
errors = true;
ModelState.AddModelError("FileBlob", "Please upload a file");
}
}
if (errors)
{
return ShowTheFormAgainResult();
}
else
{
return View();
}
}
podstawie każdej próbki kodu udało mi się znaleźć, to wydaje się w drodze do Zrób to. Próbowałem już z małymi i dużymi plikami, bez różnicy w wyniku. Pole formularza zawsze zawiera nazwę pliku, która pasuje do tego, co wybrałem, a kolekcja Request.Files jest zawsze pusta.
Nie sądzę, że jest to istotne, ale używam serwera sieci Web VS Development. AFAIK obsługuje wysyłanie plików tak samo jak IIS.
Robi się późno i jest szansa, że brakuje mi czegoś oczywistego. Byłbym wdzięczny za radę.
odnoszą http://stackoverflow.com/questions/9411563/asp-net-mvc3 -razor-file-upload-gives-zero-as-file-count dla powiązanego problemu – Lijo