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>
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
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
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