asp.net mvc - एमवीसी 4 रेजर फ़ाइल अपलोड करें




asp.net-mvc file-upload (4)

मैं एमवीसी 4 के लिए नया हूं और मैं अपनी वेबसाइट में फाइल अपलोड कंट्रोल को लागू करने की कोशिश कर रहा हूं। मुझे गलती नहीं मिल रही है। मुझे अपनी फाइल में एक शून्य मूल्य मिल रहा है।

नियंत्रक:

public class UploadController : BaseController
    {
        public ActionResult UploadDocument()
        {
            return View();
        }

       [HttpPost]
       public ActionResult Upload(HttpPostedFileBase file)
       {
           if (file != null && file.ContentLength > 0)
           {
               var fileName = Path.GetFileName(file.FileName);
               var path = Path.Combine(Server.MapPath("~/Images/"), fileName);
               file.SaveAs(path);
           }

           return RedirectToAction("UploadDocument");
        }
    }

राय:

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

आपको बस अपने इनपुट का नाम बदलना होगा क्योंकि पैरामीटर और इनपुट फ़ील्ड नाम में एक ही नाम आवश्यक है बस इस लाइन को प्रतिस्थापित करें आपका कोड ठीक काम कर रहा है

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

इसे स्पष्ट करना आदर्श:

public class ContactUsModel
{
    public string FirstName { get; set; }             
    public string LastName { get; set; }              
    public string Email { get; set; }                 
    public string Phone { get; set; }                 
    public HttpPostedFileBase attachment { get; set; }

पोस्ट एक्शन

public virtual ActionResult ContactUs(ContactUsModel Model)
{
 if (Model.attachment.HasFile())
 {
   //save the file

   //Send it as an attachment 
    Attachment messageAttachment = new Attachment(Model.attachment.InputStream,       Model.attachment.FileName);
  }
}

अंत में हैफ़ाइल की जांच के लिए एक्सटेंशन विधि

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

    namespace AtlanticCMS.Web.Common
    {
        public static class ExtensionMethods 
        {
            public static bool HasFile(this HttpPostedFileBase file)
            {
                return file != null && file.ContentLength > 0;
            }        
        }
    }

मुझे लगता है, बेहतर तरीके से आपके नियंत्रक या एपीआई में HttpPostedFileBase का उपयोग किया जाता है। इसके बाद आप आकार, प्रकार आदि का पता लगा सकते हैं।

फ़ाइल गुण जो आप यहां पा सकते हैं:

MVC3 कैसे जांचें कि HttpPostedFileBase एक छवि है या नहीं

उदाहरण के लिए ImageApi:

[HttpPost]
[Route("api/image")]  
public ActionResult Index(HttpPostedFileBase file)  
{  
    if (file != null && file.ContentLength > 0)  
        try 
        {  
            string path = Path.Combine(Server.MapPath("~/Images"),  
               Path.GetFileName(file.FileName));

            file.SaveAs(path);  
            ViewBag.Message = "Your message for success";  
        }  
        catch (Exception ex)  
        {  
            ViewBag.Message = "ERROR:" + ex.Message.ToString();  
        }  
    else 
    {  
        ViewBag.Message = "Please select file";  
    }  
    return View();  
}

उम्मीद है कि यह मदद करता है।


Upload विधि के HttpPostedFileBase पैरामीटर में file input के समान नाम होना चाहिए।

तो बस इसमें इनपुट बदलें:

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

साथ ही, आप Request.Files में फ़ाइलों को पा सकते हैं:

[HttpPost]
public ActionResult Upload()
{
     if (Request.Files.Count > 0)
     {
         var file = Request.Files[0];

         if (file != null && file.ContentLength > 0)
         {
            var fileName = Path.GetFileName(file.FileName);
            var path = Path.Combine(Server.MapPath("~/Images/"), fileName);
            file.SaveAs(path);
         }
     }

     return RedirectToAction("UploadDocument");
 }






file-upload