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.
Author: urlreader, 2014-09-10

4 answers

Usar este 'plugin' de jQuery

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 });
}
 4
Author: aleha, 2015-09-20 21:59:46

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

 21
Author: Felipe Oriani, 2014-09-10 20:31:19
Estou a usar este. https://www.fyneworks.com/jquery/multiple-file-upload/
<input type="file" name="file" class="multiple" /> 

[HttpPost] 
public ActionResult Upload()  
{
    if (Request.Files.Count > 0)
    {
          foreach(var file in Request.Files) {  }
    }

    return View(); 
}
 1
Author: Kadir, 2014-09-10 22:17:55

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();
}
 0
Author: Moji, 2017-07-03 13:15:56