Je suis nouveau sur MVC 4 et j'essaie d'implémenter le contrôle de téléchargement de fichiers sur mon site Web. Je ne trouve pas l'erreur, j'obtiens une valeur nulle dans mon fichier.
Manette:
public class UploadController : BaseController
{
public ActionResult UploadDocument()
{
return View();
}
[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
if (file != null && file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/Images/"), fileName);
file.SaveAs(path);
}
return RedirectToAction("UploadDocument");
}
}
Vue:
@using (Html.BeginForm("Upload", "Upload", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="FileUpload" />
<input type="submit" name="Submit" id="Submit" value="Upload" />
}
enctype
le formulaire m'a coûté une heureRéponses:
Le paramètre de
Upload
la méthodeHttpPostedFileBase
doit avoir le même nom que lefile input
.Modifiez donc simplement l'entrée en ceci:
Vous pouvez également trouver les fichiers dans
Request.Files
:la source
Index out of bounds
exception s'il n'y a pas de fichier dans laRequest.Files
collection ..?ArgumentOutOfRangeException
, mais vous avez raison, j'ai mis à jourviewmodel
propriété est nommée,AgentPhoto
vous devez avoir les éléments suivants à votre vue:<input type="file" name="AgentPhoto"/>
var path = Path.Combine(Server.MapPath("~/Images/"), fileName);
, la classe "Serveur" introuvable, quel package utiliser?Clarifier. Modèle:
Après l'action
Enfin la méthode d'extension pour vérifier le hasFile
la source
Voir page
Fichier de script
Dans le contrôleur
la source
AJAX
ici.Html.BeginForm
fait déjà le travail. AJAX n'est nécessaire que si vous ne voulez pas de redirection vers le<form action=LINK>
il vous suffit de changer le nom de votre entrée déposée car le même nom est requis dans le paramètre et le nom du champ de saisie il suffit de remplacer cette ligne Votre code fonctionne bien
la source
Je pense que la meilleure façon est d'utiliser HttpPostedFileBase dans votre contrôleur ou votre API. Après cela, vous pouvez simplement détecter la taille, le type, etc.
Les propriétés de fichier que vous pouvez trouver ici:
MVC3 Comment vérifier si HttpPostedFileBase est une image
Par exemple ImageApi:
J'espère que cela vous aidera.
la source
HttpPostedFileBase
.