Asp.net MVC: enviar vários ficheiros de imagem?
Existe um bom exemplo de como enviar vários ficheiros de imagem em asp.net acidente de viação? Eu sei que podemos usar o Httpposted Filebase para carregar um ficheiro. Existe uma maneira de enviar vários arquivos clicando em um botão?
Usei o upload de ficheiros no ajaxtoolbox na webform antes e como funciona. Há uma maneira similar no acidente de viação? ou, existe um controle existente que pode fazer isso bem? o controle livre é melhor, mas é ok até mesmo custa alguns dólares. Obrigado.4 answers
Inclui apenas os ficheiros JS do plugin, cria a marca:
<input type='file' multiple id='fileUpload' name="files[]" data-url="@Url.Action("Upload","Home")" />
(excepto o IE9 não está a permitir seleccionar vários ficheiros na janela de selecção)
Adicione algum JavaScript:
$(function () {
$('#fileUpload').fileupload({
dataType: 'json',
done: function (e, data) {
$.each(data.result.files, function (index, file) {
$('<p/>').text(file.name).appendTo(document.body);
});
}
});
});
Na Acção do controlador, basta verificar o pedido.Limpe e faça o que quiser. Aqui está uma boa documentação
[HttpPost]
public JsonResult Upload()
{
foreach (var file in Request.Files)
{
if(file.ContentLength > 0)
{
file.SaveAs(Server.MapPath("~/Upload/" + file.FileName));
}
}
return Json(new { result = true });
}
Você pode implementar uma acção com POST
o verbo http que recebe uma colecção de HttpPostedFileBase
e gravar todos os ficheiros, para a amostra:
[HttpPost]
public ActionResult Upload(IEnumerable<HttpPostedFileBase> files)
{
foreach (var file in files)
{
file.SaveAs(Server.MapPath("~/Update/" + file.FileName));
}
return View();
}
Em alternativa, podias ler Request.Files
e fazer o mesmo trabalho,
[HttpPost]
public ActionResult Upload()
{
foreach (var file in Request.Files)
{
file.SaveAs(Server.MapPath("~/Update/" + file.FileName));
}
return View();
}
Ver Também
<input type="file" name="file" class="multiple" />
[HttpPost]
public ActionResult Upload()
{
if (Request.Files.Count > 0)
{
foreach(var file in Request.Files) { }
}
return View();
}
Alguns dos bits básicos necessários para os uploads de Ficheiros
Notice keyword: multiple in input element e multipart no elemento forma
Lado HTML
@using (Html.BeginForm("MyUpload", "MyController", FormMethod.Post, new { enctype = "multipart/form-data" })) {
<input type="file" name="myFiles" multiple />
<button class="btn btn-default">Upload</button>
}
Controlador
[HttpPost]
public ActionResult MyUpload(IEnumerable<HttpPostedFileBase> myFiles)
{
foreach (var file in myFiles)
{
if (file != null && file.ContentLength > 0)
{
//handle files;
}
}
return View();
}