Je cette forme à mon avis:Téléchargement de fichiers avec ASP.Net MVC - obtenir le nom, mais pas de flux de fichier, qu'est-ce que je fais mal?
<!-- 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>
Et ce code dans mon contrôleur:
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();
}
}
Sur la base de chaque échantillon de code que je suis en mesure de trouver, cela semble être le chemin fais le. J'ai essayé avec des fichiers petits et grands, sans différence dans le résultat. Le champ de formulaire contient toujours le nom de fichier qui correspond à ce que j'ai choisi, et la collection Request.Files est toujours vide.
Je ne pense pas que ce soit pertinent, mais j'utilise VS Development Web Server. AFAIK il supporte les téléchargements de fichiers les mêmes que IIS.
Il se fait tard et il y a une chance que je manque quelque chose d'évident. Je serais reconnaissant pour tout conseil.
Référez http://stackoverflow.com/questions/9411563/asp-net-mvc3 -razz-fichier-upload-donne-zero-as-file-count pour un problème connexe – Lijo