2010-11-05 4 views
0

Je tentais de télécharger un fichier dans une base de données et je me demandais si quelqu'un pouvait m'aider un peu car je me suis un peu coincé, et il n'y a pas d'erreurs. Ce qui se passe est, ma vue affiche où je vais télécharger mon fichier. Dès que j'appuie sur le bouton de téléchargement, cela me ramène à la page de téléchargement CreateCover de l'application, mais elle ne télécharge rien dans la base de données.Télécharger un fichier dans MVC

Si quelqu'un peut offrir une aide, je serais ravi :)

PS: http://www.mikesdotnetting.com/Article/125/ASP.NET-MVC-Uploading-and-Downloading-Files -> Voici le tutoriel que je suivais à l'origine. J'essayais de l'utiliser comme base pour ce que je voulais faire.

Voici les extraits de mon code:

CoverController.cs

// 
     //GET: /File/CreateCover 
     public ActionResult CreateCover() 
     { 
      Cover cover = new Cover(); 

      return View(cover); 
     } 

     // 
     //POST: /File/CreateCover 
     [HttpPost] 
     public ActionResult CreateCover(FormCollection formvalues) 
     { 
      Cover cover = new Cover(); 

      cover.CoverMimeType = Request.Files["CoverUpload"].ContentType; 
      Stream fileStream = Request.Files["CoverUpload"].InputStream; 
      cover.CoverFileName = Path.GetFileName(Request.Files["CoverUpload"].FileName); 
      int fileLength = Request.Files["CoverUpload"].ContentLength; 
      cover.CoverFileContent = new byte[fileLength]; 
      fileStream.Read(cover.CoverFileContent, 0, fileLength); 

      filerepository.Save(); 

      return View(cover); 
     } 

Cover.cs

[MetadataType(typeof(Cover_Validation))] 
    public partial class Cover 
    { 
     // 
    } 

    public class Cover_Validation 
    { 
     [Required(ErrorMessage = "Please enter a file")] 
     [StringLength(50, ErrorMessage = "You have not selected a cover image to upload")] 
     public byte[] CoverFileContent; 

     [Required(ErrorMessage = "A MimeType is required")] 
     [StringLength(13, ErrorMessage = "Your file must contain a MimeType")] 
     public string CoverMimeType { get; set; } 

     [Required(ErrorMessage = "A Filename is required")] 
     [StringLength(13, ErrorMessage = "Your file must have a filename")] 
     public string CoverFileName { get; set; } 
    } 

Snippet de FileRepository relative à la section Ajout couverture

//Insert Cover Data 
public void AddCoverData(Cover cover) 
{ 
    entities.Covers.AddObject(cover); 
} 

Un d enfin ici est la vue CreateCover

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<SampleApp.Models.Cover>" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    CreateCover 
</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

    <h2>CreateCover</h2> 

    <% using (Html.BeginForm("CreateCover", "Cover", FormMethod.Post, new { enctype = "multipart/form-data" })) 
     { %> 
    <asp:Label ID="Label2" runat="server" Text="Please Select your eBook Cover" /><br /> 
    <input type="file" name="CoverUpload" /><br /> 
    <input type="submit" name="submit" id="Submit" value="Upload" /> 

    <% } %> 

    <div> 
     <%: Html.ActionLink("Back to List", "Index") %> 
    </div> 

</asp:Content> 

Répondre

4

Vous êtes redirigé vers la page d'accueil parce que c'est où vous envoyez des messages le formulaire.

Vous devez envoyer à l'action CreateCover sur votre CoverController.

E.g.

<% using (Html.BeginForm("CreateCover", 
         "Cover", 
         FormMethod.Post, 
         new { enctype = "multipart/form-data" })) { %> 

HTHS,
Charles

+0

Salut Charles, qui semble à peu près juste. Ça va m'apprendre à copier et coller! Je vais essayer et vous dire comment ça se passe. – 109221793

+0

Salut Charlino, j'ai changé cette erreur et j'ai repéré une autre erreur moi-même. C'est incroyable ce qu'une pause peut faire. Mon seul problème est maintenant, que quand je clique sur le téléchargement, cela me ramène à la page de téléchargement de fichier, qui est le résultat souhaité, mais il ne parvient pas à télécharger quoi que ce soit dans la base de données. Des idées? – 109221793

+0

En lisant votre code d'action, vous appelez 'filerepository.Save();' mais vous ne joignez jamais le nouveau modèle 'Cover cover' à votre dépôt ... avez-vous besoin d'appeler quelque chose comme' filerepository.Add (cover); 'avant d'appeler' .Save(); '? – Charlino

Questions connexes