Form enctype=“multipart/form-data” ne fonctionne PAS
J'ai fait des tests de téléchargement d'une photo de MVC (la photo est envoyée en tant que paramètre d'un APPEL AJAX) contrôleur à l'aide d'un formulaire, et maintenant besoin de faire la même chose mais modifié:
Source d'origine qui fonctionne est:
<form action="/Home/Upload" method="post" enctype="multipart/form-data">
<label for="photo">Photo:</label>
<input type="file" name="photo" id="photo" />
<input id="uploadbtn" type="submit" value="Upload" />
</form>
et de l'Action code du Contrôleur:
[HttpPost]
public ActionResult Upload(HttpPostedFileBase photo)
{
//Verify that the user selected a file
if (photo != null && photo.ContentLength > 0)
{
//extract only the fielname
var fileName = Path.GetFileName(photo.FileName);
//store the file inside ~/App_Data/uploads folder
var path = Path.Combine(Server.MapPath("~/C:/poze"), fileName);
photo.SaveAs(path);
}
return Json(new { Success = true });
}
Cela fonctionne, mais dans ce cas, ne fonctionne pas:
@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div class="control-group">
<label class="control-label" for="photo">Photo:</label>
<div class="controls">
<input type="file" name="photo" id="photo" />
</div>
</div>
}
et de l'Action code est:
public ActionResult EditModule(INT ID, string Description, HttpPostedFileBase photo)
{
if (photo != null && photo.ContentLength > 0)
{
//extract only the fielname
var fileName = Name + ".png";
//store the file inside ~/App_Data/uploads folder
var path = Path.Combine(Server.MapPath("~/Content/Module Previews"), fileName);
photo.SaveAs(path);
}
else
{
Status += "Error image";
Success = false;
}
}
Quand je debug EditModule, la valeur de la photo est NULLE.
Je suis sûr qu'il n'y a pas de problème avec le javascript et ajax appel.
Ce
javascript and ajax call
?
OriginalL'auteur Alynuzzu | 2013-08-21
Vous devez vous connecter pour publier un commentaire.
Vous avez défini le contrôleur et le nom de l'action à la valeur null si le formulaire ne sais pas où poster. Changement les 2 premiers paramètres le nom de l'action et nom du contrôleur:
OriginalL'auteur levelnis
Vous ne pouvez pas télécharger des fichiers binaires avec l'ajax. Vous devez utiliser un
<IFRAME>
ou un plugin Flash.Voir cette réponse pour plus d'informations: https://stackoverflow.com/a/6462673/70386
OriginalL'auteur jgauffin
Quand vous mettez la valeur null dans l'action et le contrôleur MVC utilise l'action en cours et de contrôleur.
OriginalL'auteur Carol