Загрузка файла в MVC - PullRequest
       1

Загрузка файла в MVC

0 голосов
/ 05 ноября 2010

Попытка загрузить файл в базу данных и мне было интересно, если кто-то может мне помочь, потому что я немного застрял, и нет никаких ошибок. Что происходит, мой взгляд показывает, куда я иду, чтобы загрузить свой файл. Как только я нажимаю кнопку загрузки, он возвращает меня на страницу загрузки приложения CreateCover, однако он не может загрузить что-либо в базу данных.

Если кто-нибудь может предложить какую-либо помощь, я был бы рад:)

PS: http://www.mikesdotnetting.com/Article/125/ASP.NET-MVC-Uploading-and-Downloading-Files -> Это учебник, которому я следовал изначально. Я пытался использовать это как основу для того, что я хотел сделать.

Вот фрагменты моего кода:

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

Фрагмент из FileRepository, относящийся к добавлению обложки

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

И, наконец, вот представление 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>

1 Ответ

4 голосов
/ 05 ноября 2010

Вы перенаправлены на домашнюю страницу, потому что именно там вы отправляете форму.

Вам необходимо опубликовать действие CreateCover на вашем CoverController.

1007 * Е.Г. *

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

HTHS,
Charles

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...