ASP MVC de Téléchargement de Fichiers HttpPostedFileBase est Null
Dans mon contrôleur que j'ai, parce que je voulais être en mesure de remplir quelques détails au sujet de la vidéo et de la réalité de téléchargement, la Vidéo de la classe n'a pas besoin de la vidéo, parce qu'elle va être transmis à un autre service web.
public class VideoUploadModel
{
public HttpPostedFileBase vid { get; set; }
public Video videoModel { get; set; }
}
//
//POST: /Video/Create
[HttpPost]
public ActionResult Create(VideoUploadModel VM)
{
if (ModelState.IsValid)
{
db.Videos.AddObject(VM.videoModel);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.UserId = new SelectList(db.DBUsers, "Id", "FName", VM.videoModel.UserId);
return View(VM);
}
et à mon avis j'ai
@model LifeHighlightsShoeLace.Controllers.VideoController.VideoUploadModel
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
@using (Html.BeginForm("Create", "Video", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Video</legend>
<div class="editor-label">
@Html.LabelFor(model => model.videoModel.KalturaID)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.videoModel.KalturaID)
@Html.ValidationMessageFor(model => model.videoModel.KalturaID)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.videoModel.Size)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.videoModel.Size)
@Html.ValidationMessageFor(model => model.videoModel.Size)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.videoModel.Date)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.videoModel.Date)
@Html.ValidationMessageFor(model => model.videoModel.Date)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.videoModel.UploadedBy)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.videoModel.UploadedBy)
@Html.ValidationMessageFor(model => model.videoModel.UploadedBy)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.videoModel.UserId, "User")
</div>
<div class="editor-field">
@Html.DropDownList("UserId", String.Empty)
@Html.ValidationMessageFor(model => model.videoModel.UserId)
</div>
<div class="editor-field">
<input name="model.vid" type="file" />
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
Quand j'envoie le formulaire, la videoModel partie de la VM est rempli mais vid le fichier réel est nul.
Des idées?
OriginalL'auteur Matthew Arkin | 2012-06-01
Vous devez vous connecter pour publier un commentaire.
La mise à jour de l'OP commentaire
définir le Max de la longueur du fichier dans le web.fichier de configuration
Changer le "?" pour une taille de fichier que vous souhaitez pour votre max, par exemple 65536 est de 64 mo
Vous ne pouvez pas ajouter le fichier dans le modèle, il sera dans son propre champ ne fait pas partie du modèle
Votre action est incorrect. Il doit accepter le fichier en tant que c'est propre paramètre (ou si l'utilisation multiple
IEnumerable<HttpPostedFileBase>
comme le type de paramètre)Si vous avez été plusieurs fichiers sélectionnés, vous devez autoriser pour que
Des sons comme vous avez sélectionné un fichier de plus de 4 mo
Haha oui. Merci les gars!
Mise à jour de la réponse check it out
Merci, je devine que pour les téléchargements de gros fichiers, je serais mieux d'utiliser une sorte de ajax/flash/silverlight fichier uploader?
OriginalL'auteur CD Smith
La raison pour laquelle il n'est pas contraignant est parce que le modèle de classeur ne regarde que
QueryString
,Form
, etRouteData
lors de la liaison d'un modèle complexe comme la vôtre. Le moyen de contourner ce problème est d'avoir un autre paramètre dans votre méthode d'action. (changer votre "nom" juste "vid")OriginalL'auteur Buildstarted
Fonctionne pour moi:
Contrôleur:
Vue:
Je pense que la solution placé là:
Model.File
~<input name="File"/>
OriginalL'auteur AZIP
changement
à
selon sur quoi d'autre est sur votre page, et d'où la vue est en cours de rendu, le MVC va générer des ID unique, je pense que votre codé en dur ID n'est pas associée correctement les champs du formulaire.
OriginalL'auteur Jason Kulatunga