2014-01-08 6 views
3

В основном то, что у меня есть на данный момент, представляет собой проектную базу данных проекта ASP.NET MVC, вначале таблицы принимают буквенно-цифровой ввод, но я думаю, что было бы довольно изящно иметь загрузку файла, чтобы я мог вставить в базу данных, поэтому я создал таблицу на сервере SQL с полем ID и поле изображения с изображением типа данных.Загрузка файла ASP.NET MVC

Когда я добавляю эту модель и создаю свой контроллер и представления на основе этой модели, она не создает ярлык или редактор для этого поля, я использовал DataAnnotations, чтобы дать ему загрузку DataType, но я не могу найти способ фактически загружая файл, который я пробовал, который работает для обычного ввода, но ничего не появляется, есть способ иметь @ HTML.FileUploadFor (model => model.Vehicle) или что-то в этом роде.

Это то, что я пытался

<div class="editor-label"> 
    @Html.LabelFor(model => model.Vehicle) 
</div> 
<div class="editor-field"> 
    @Html.EditorFor(model => model.Vehicle) 
    @Html.ValidationMessageFor(model => model.Vehicle) 
</div> 

Это моя модель

public partial class VehicleImage 
{ 
    public int Vehicle_ID { get; set; } 
    [DataType(DataType.Upload)] 
    public byte[] Vehicle { get; set; } 
} 

ответ

3

Есть много подходов к этому.

Обычно я использую плагин jquery под названием Uploadify.

Посмотрите на этот пост - https://stackoverflow.com/a/17520062/1581026

Другой способ просто добавив следующее в ваш взгляд, в вашей форме:

<input type="file" name="Picture" /> 

Ваш элемент формы должен выглядеть следующим образом:

@using (Html.BeginForm("ACTION", "CONTROLLER", FormMethod.Post, new { enctype = "multipart/form-data" })) 

А затем на вашей модели, которая проходит к вашему действию POST, вы можете добавить атрибут:

public HttpPostedFileBase Picture {get; set; } 

Или вы можете просто добавить его в качестве параметра в действии POST:

[HttpPost] 
Public ActionResult SomeAction(HttpPostedFileBase Picture, .....) 
+0

Приветствия, картинка в данном случае являющегося имя поля базы данных, которые я загружаю его в? – Crouch

+0

no, "Picture" будет атрибутом вашей модели. Вы не можете напрямую сохранить его в своей базе данных. Сначала вам придется изменить его на массив байтов. –

+0

Извините, я забыл, что вам также нужно добавить encype = multipart/form-data, как в сообщении Ajay Punekar - http://stackoverflow.com/a/20996333/1581026. Я также добавил его в свой пост. –

3

Существует не стандартный элемент управления или помощника для файлов, насколько я знаю. Однако вот хороший учебник для достижения желаемого.

http://haacked.com/archive/2010/07/16/uploading-files-with-aspnetmvc.aspx/

Кроме того, если вы действительно хотите эту функцию, вы можете написать HTML-Helper самостоятельно.

  1. написав метод расширения для объекта HtmlHelper
  2. Объявив блок кода на ваш взгляд, например:

@helper MyHelper(string id){ <input type="file" id="@id" /> }

+0

Приветствия Я буду изучать этот – Crouch

0

попробовать что-то вроде этого:

Создание этого типа от вид

using (Html.BeginForm("FileUpload", "FileUpload", 
       FormMethod.Post, new { enctype = "multipart/form-data" })) 
    { 
     <input name="uploadFile" type="file" /> 
     <input type="submit" value="Upload File" /> 
    } 

Вот контроллера метода

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult FileUpload(HttpPostedFileBase uploadFile) 
{ 
} 

Пожалуйста, обратитесь по этой ссылке: http://www.codeproject.com/Articles/38970/Implementing-HTTP-File-Upload-with-ASP-NET-MVC

Смежные вопросы