existe-t-il un bon exemple de la façon de télécharger plusieurs fichiers image dans asp.net mvc? Je sais que nous pouvons utiliser HttpPostedFileBase pour télécharger un fichier. Existe-t-il un moyen de télécharger plusieurs fichiers en cliquant sur un bouton?
J'ai utilisé le téléchargement de fichiers dans ajaxtoolbox dans le formulaire Web avant et j'aime comment cela fonctionne. Existe-t-il une méthode similaire dans MVC? ou, existe-t-il un contrôle existant qui peut bien faire cela? le contrôle libre est meilleur, mais c'est ok même si cela coûte quelques $.
Merci
Utilisez ceci plugin jQuery
il suffit d'inclure des fichiers plugin js, créer une balise:
<input type='file' multiple id='fileUpload' name="files[]" data-url="@Url.Action("Upload","Home")" />
(Sauf IE9, il ne permet pas de sélectionner plusieurs fichiers dans la boîte de dialogue de sélection)
Ajoutez du JavaScript:
$(function () {
$('#fileUpload').fileupload({
dataType: 'json',
done: function (e, data) {
$.each(data.result.files, function (index, file) {
$('<p/>').text(file.name).appendTo(document.body);
});
}
});
});
Dans l'action du contrôleur, vérifiez simplement Request.Files et faites ce que vous voulez. Voici un bon documentation
[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 });
}
Vous pouvez implémenter une action avec POST
verbe http pour recevoir une collection de HttpPostedFileBase
et enregistrer tous les fichiers, par exemple:
[HttpPost]
public ActionResult Upload(IEnumerable<HttpPostedFileBase> files)
{
foreach (var file in files)
{
file.SaveAs(Server.MapPath("~/Update/" + file.FileName));
}
return View();
}
Vous pouvez également lire Request.Files
et faire le même travail,
[HttpPost]
public ActionResult Upload()
{
foreach (var file in Request.Files)
{
file.SaveAs(Server.MapPath("~/Update/" + file.FileName));
}
return View();
}
J'utilise celui-ci. 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();
}
Certains des bits de base requis pour les téléchargements de fichiers
Remarquez le mot-clé: multiple dans l'élément d'entrée ET multipart dans l'élément de formulaire
@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>
}
[HttpPost]
public ActionResult MyUpload(IEnumerable<HttpPostedFileBase> myFiles)
{
foreach (var file in myFiles)
{
if (file != null && file.ContentLength > 0)
{
//handle files;
}
}
return View();
}