2013-06-15 32 views
8

Tôi có trang web ASP.NET MVC. Tôi cần một trang mà người dùng phải nhập một số trường, bao gồm một tệp hình ảnh.Tải lên tệp dưới dạng một phần của biểu mẫu với các trường khác

Tôi có thể tìm thấy nhiều tài liệu tham khảo để tải lên tệp bằng MVC. Nhưng họ không tải lên tệp như một phần của biểu mẫu với các trường khác.

Lý tưởng nhất là các trường và tệp sẽ được gửi đến một bộ điều khiển duy nhất. Có lời khuyên nào không?

+0

Bạn đang sử dụng một cuộc gọi ajax hoặc gửi biểu mẫu trực tiếp? – Mate

+0

Bài đăng trang thông thường. –

Trả lời

5

Bạn có thể sử dụng FineUploader. See Demo

Valums Uploader. Nó sử dụng Javascript thuần túy (tải lên tệp bằng Iframe)

Bạn có thể cần sử dụng plugin của ứng dụng khách. Plupload là một lựa chọn có thể. Và here's an example cách bạn có thể tích hợp nó trong ứng dụng MVC của bạn. Một plugin phổ biến khác hỗ trợ chức năng này là Uploadify.

Asp.net mvc 3 file uploads using the fileapi

Xem Progress Demo 1, 2 & 3 tại http://jquery.malsup.com/form/#file-upload

Ref: http://forums.asp.net/t/1897410.aspx/1?MVC4+File+Upload

9

Nếu bạn không sử dụng thư viện của bên thứ ba, hãy thử này:

Mẫu

public class Strategy 
    { 
     public int ID { get; set; } 
     public string Name { get; set; } 
     public byte[] File { get; set; } 

    } 
.210

Xem

@model TEST.Model.Strategy 
@using (Html.BeginForm("Add", "Strategy", FormMethod.Post, new { @id = "frmStrategy", enctype = "multipart/form-data" })) 
     { 
      @Html.TextBoxFor(x => x.Name) 
      <input id="templateFile" name="templateFile" type="file" /> 
      @Html.HiddenFor(x => x.ID) 

     } 

khiển

[HttpPost] 
     public ActionResult Add(Strategy model, HttpPostedFileBase templateFile) 
     { 


      if (templateFile != null && templateFile.ContentLength > 0) 
      { 
       try 
       { 
        var fname = Path.GetFileName(templateFile.FileName); 
        using (MemoryStream ms = new MemoryStream()) 
        { 
         templateFile.InputStream.CopyTo(ms); 
         byte[] array = ms.GetBuffer(); 
         model.File = array; 
        } 
        ... 
+0

Tôi nghĩ rằng nó không cần thiết các tài sản tập tin trong mô hình chiến lược. – Romias

+2

Đúng vậy, không cần thiết hoặc cần thiết. Nó chỉ là một ví dụ ... Ví dụ nếu bạn vẫn tồn tại các tập tin trong một bảng, và sử dụng một số ORM ... – Mate

+1

+1 Cảm ơn Mate! – FreeAsInBeer

Các vấn đề liên quan