Soy nuevo en MVC 4 y estoy tratando de implementar el Control de carga de archivos en mi sitio web. No puedo encontrar el error. Obtengo un valor nulo en mi archivo.
Controlador:
public class UploadController : BaseController
{
public ActionResult UploadDocument()
{
return View();
}
[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
if (file != null && file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/Images/"), fileName);
file.SaveAs(path);
}
return RedirectToAction("UploadDocument");
}
}
Ver:
@using (Html.BeginForm("Upload", "Upload", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="FileUpload" />
<input type="submit" name="Submit" id="Submit" value="Upload" />
}
asp.net-mvc
file-upload
Liam
fuente
fuente
enctype
el formulario me costó una horaRespuestas:
El parámetro
Upload
del métodoHttpPostedFileBase
debe tener el mismo nombre que elfile input
.Entonces solo cambie la entrada a esto:
Además, puede encontrar los archivos en
Request.Files
:fuente
Index out of bounds
excepción en caso de que no haya ningún archivo en laRequest.Files
colección ...?ArgumentOutOfRangeException
, pero tienes razón, actualicéviewmodel
se nombra su propiedad,AgentPhoto
entonces debe tener lo siguiente en su vista:<input type="file" name="AgentPhoto"/>
var path = Path.Combine(Server.MapPath("~/Images/"), fileName);
, la clase "Servidor" no encontrada, ¿qué paquete utiliza?Aclarándolo. Modelo:
Publicar acción
Finalmente, el método de Extensión para verificar el hasFile
fuente
Ver pagina
archivo de comandos
En el controlador
fuente
AJAX
aquí.Html.BeginForm
hace el trabajo ya. AJAX solo es necesario si no desea una redirección a la<form action=LINK>
solo tiene que cambiar el nombre de su entrada archivada porque se requiere el mismo nombre en el parámetro y el nombre del campo de entrada simplemente reemplace esta línea Su código funciona bien
fuente
Creo que la mejor manera es usar HttpPostedFileBase en su controlador o API. Después de esto, puede detectar simplemente el tamaño, el tipo, etc.
Propiedades de archivo que puede encontrar aquí:
MVC3 Cómo verificar si HttpPostedFileBase es una imagen
Por ejemplo ImageApi:
Espero que sea de ayuda.
fuente
HttpPostedFileBase
.