Se eu escrever assim:
ação do formulário = "Imagens" método = "post" enctype = "multipart / form-data"
funciona.
Mas no Razor com '@' não funciona. Eu cometi algum erro?
@using (Html.BeginForm("Upload", "Upload", FormMethod.Post,
new { enctype = "multipart/form-data" }))
{
@Html.ValidationSummary(true)
<fieldset>
Select a file <input type="file" name="file" />
<input type="submit" value="Upload" />
</fieldset>
}
Meu controlador fica assim:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Upload()
{
foreach (string file in Request.Files)
{
var uploadedFile = Request.Files[file];
uploadedFile.SaveAs(Server.MapPath("~/content/pics") +
Path.GetFileName(uploadedFile.FileName));
}
return RedirectToAction ("Upload");
}
forms
asp.net-mvc-3
razor
kk-dev11
fonte
fonte
Respostas:
O código a seguir funciona bem:
e gera conforme o esperado:
Por outro lado, se você estiver escrevendo esse código dentro do contexto de outra construção do lado do servidor, como um
if
ouforeach
você deve remover o@
antes deusing
. Por exemplo:No que diz respeito ao código do lado do servidor, veja como proceder :
fonte
<form>
tags (o que não é permitido em HTML) ou pode estar usando algum javascript que rouba o envio normal do formulário e faz uma solicitação AJAX que não é ' Não trabalhe com uploads de arquivos.GET
ação Carregar que servirá aUpload.cshtml
exibição que contém este código:public ActionResult Upload() { return View(); }
. Portanto, verifique se você tem um controlador chamadoUploadController
contendo as duas ações de Upload: uma para servir o formulário e a outra para processar o envio.