Eu sou novo no MVC 4 e estou tentando implementar o Controle de Upload de Arquivos no meu site. Não consigo encontrar o erro. Estou recebendo um valor nulo no meu arquivo.
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");
}
}
Visão:
@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
fonte
fonte
enctype
no formulário de me custou uma horaRespostas:
O parâmetro
Upload
do métodoHttpPostedFileBase
deve ter o mesmo nome que ofile input
.Então, basta alterar a entrada para isso:
Além disso, você pode encontrar os arquivos em
Request.Files
:fonte
Index out of bounds
exceção, caso não exista arquivo naRequest.Files
coleção ..?ArgumentOutOfRangeException
, mas você está certo, eu atualizeiviewmodel
propriedade é nomeadoAgentPhoto
em seguida, você deve ter o seguinte em seu ponto de vista:<input type="file" name="AgentPhoto"/>
var path = Path.Combine(Server.MapPath("~/Images/"), fileName);
, a classe "Servidor" não encontrada, qual pacote usa?Esclarecendo. Modelo:
Ação pós
Finalmente, o método Extension para verificar o hasFile
fonte
Ver pagina
Arquivo de script
No controlador
fonte
AJAX
aqui.Html.BeginForm
já faz o trabalho. AJAX só é necessário se você não quer um redirecionamento para o<form action=LINK>
você só precisa alterar o nome da sua entrada arquivada porque o mesmo nome é necessário no parâmetro e o nome do campo de entrada apenas substitui esta linha Seu código está funcionando bem
fonte
Eu acho que, melhor maneira é usar HttpPostedFileBase em seu controlador ou API. Depois disso, você pode simplesmente detectar o tamanho, o tipo etc.
Propriedades do arquivo que você pode encontrar aqui:
MVC3 Como verificar se HttpPostedFileBase é uma imagem
Por exemplo ImageApi:
Espero que ajude.
fonte
HttpPostedFileBase
.