vista una tag route que parcial page net mvc data asp all asp.net-mvc upload

asp.net-mvc - una - render partial asp net core



Cargar archivos con ASP.Net MVC-obtener un nombre pero no una secuencia de archivos, ¿qué estoy haciendo mal? (4)

Tengo este formulario en mi opinión:

<!-- 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>

Y este código en mi controlador:

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(); } }

Basado en cada muestra de código que he podido encontrar, esta parece ser la manera de hacerlo. Lo he intentado con archivos pequeños y grandes, sin diferencia en el resultado. El campo de formulario siempre contiene el nombre de archivo que coincide con lo que he elegido, y la colección Request.Files siempre está vacía.

No creo que sea relevante, pero estoy usando el servidor web VS Development. AFAIK admite cargas de archivos al igual que IIS.

Se está haciendo tarde y existe la posibilidad de que me esté perdiendo algo obvio. Estaría agradecido por cualquier consejo.


Es bueno que hayas encontrado tu error.

Como nota al margen, querrá probar / atrapar el código de manejo de archivos para que sepa cuándo los permisos de archivos, etc. no están configurados correctamente.


var file = Request.Files[sFileName];

debiera ser...

var file = Request.Files["FileBlob"];

dicho eso, Request.Files.Count debería ser 1 ... hmmm



No sé cuál es la política de publicar palabras soeces, pero este es el problema:

enctype="mulitipart/form-data"

El extra i ahí detuvo el archivo de la carga. Tuve que ejecutar Fiddler para ver que nunca se envió el archivo en primer lugar.

Debe leer:

enctype="multipart/form-data"