2009-04-19 21 views
9

मेरे विचार में निम्न मार्कअप के साथ:फ़ाइल अपलोड MVC

<form action="Categories/Upload" enctype="multipart/form-data" method="post"> 
    <input type="file" name="Image"> 
    <input type="submit" value"Save"> 
</form> 

और मेरे नियंत्रक में:

public ActionResult Upload(FormCollection form) 
{ 
    var file = form["Image"]; 
} 

फ़ाइल का मूल्य null है। यदि मैं इसे एक अलग नियंत्रक नियंत्रक का उपयोग करके एक अलग दृश्य में आज़माता हूं और यह एक ही कोड के साथ काम करता है।

मेरे पास Vista, MVC 1.0 पर VS2008 है।

क्यों?

मैल्कम

+7

"कोई और नहीं करेगा एक जवाब है "- ??? –

+0

वैसे 2 जवाब दिए गए हैं और मैंने पैसे नहीं लगाए हैं, कोई भी इसे SO पर हल नहीं करता है। – Malcolm

+0

उत्तर वह है जो एक समस्या हल करता है – Malcolm

उत्तर

6

इस कोड का प्रयास करें: अपनी कार्रवाई पर एक पैरामीटर के रूप

public ActionResult Upload() 
    { 
     foreach (string file in Request.Files) 
     { 
      var hpf = this.Request.Files[file]; 
      if (hpf.ContentLength == 0) 
      { 
       continue; 
      } 

      string savedFileName = Path.Combine(
       AppDomain.CurrentDomain.BaseDirectory, "PutYourUploadDirectoryHere"); 
       savedFileName = Path.Combine(savedFileName, Path.GetFileName(hpf.FileName)); 

      hpf.SaveAs(savedFileName); 
     } 

    ... 
    } 
+0

कोई अनुरोध नहीं। फाइल खाली है ???? – Malcolm

+0

आपको Request.Files की आवश्यकता नहीं है। यह उत्तर देखें: http://stackoverflow.com/questions/765211/file-upload-mvc/765308#765308 – bzlm

+0

यदि आप एकाधिक फ़ाइल अपलोड को संभालने का इरादा रखते हैं तो आपको Request.Files की आवश्यकता है। –

34

उपयोग HttpPostedFileBase। इसके अलावा, AcceptVerb विशेषता जोड़ें POST पर सेट है।

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Upload(HttpPostedFileBase image) 
{ 
    if (image != null) { 
     // do something 
    } 
    return View(); 
} 

यह कोड एएसपी.नेट एमवीसी की भावना/डिजाइन में काफी है।

+2

मैंने बस कुछ घंटों को मंडलियों में जाने में बिताया क्योंकि मेरे फ़ाइल इनपुट टैग में "आईडी =" विशेषता थी, लेकिन "NAME =" नहीं - सुनिश्चित करें कि आप "name = ..." शामिल हैं या फ़ाइल actionresult पर पोस्ट करेगी , लेकिन शून्य हो जाएगा। उम्मीद है कि यह किसी की मदद करता है। – Losbear

7

नहीं यहाँ picky या कुछ भी हो सकता है, लेकिन यहाँ, देखने के लिए कैसे कोड चाहिए के रूप में डैनियल कोड वह आपूर्ति की है में कुछ मामूली विवरण मौजूद नहीं है है ...

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult UploadPlotImage(HttpPostedFileBase image) 
{  
    if (image != null) 
    {   
     // do something  
    } 

    return View(); 
} 
+0

डैनियल क्या लापता था? – KTF

+1

मेरा अनुमान है कि डैनियल कुछ खो रहा था लेकिन ब्रेट की पोस्ट देखी और उसका जवाब संशोधित किया। –

+1

व्याकरण पुलिस! "अपलोडप्लॉट इमेज" >>> "अपलोडप्लॉट इमेज" lol =) – Losbear

2

यहां तक ​​कि मैं एक समस्या का सामना करना पड़ रहा था , मूल्य

public ActionResult UploadPlotImadge(HttpPostedFileBase image) 

पर छवि में अशक्त था इससे पहले मैं [AcceptVerbs(HttpVerbs.Post)] जो मैं जोड़ा नहीं जोड़ा। यहां तक ​​कि इसे जोड़ने के बाद, यह क्योंकि दूसरे भाग मैं याद आ रही थी, enctype="multipart/form-data", प्रपत्र टैग में होने की जरूरत काम नहीं किया ..

अब यह मेरे लिए काम करता ....

+0

enctype = "मल्टीपार्ट/फॉर्म-डेटा" मेरे लिए भी महत्वपूर्ण था, हर किसी को इसकी आवश्यकता क्यों नहीं है? – Slider345

0

इस वर्ग के लिए प्रयास करें और कार्रवाई के नीचे और AppSetting में फ़ोल्डर पथ को ठीक करें।

config:

<appSettings> 
      <add key="UploadFolerPath" value="..Your folder path" /> 
    </appSettings> 

दृश्य: -

<form action="Account/AddImage" id="form_AddImage" method="post" enctype="multipart/form-data"> 

      <input type="file" id="Img" name="Img" class="required" /> 

      <input type="submit" value="Upload" id="btnSubmit" /> 

</form> 

कक्षा: -

public class FileUpload 
{ 
    public string SaveFileName 
    { 
     get; 
     set; 
    } 


    public bool SaveFile(HttpPostedFileBase file, string FullPath) 
    { 
     string FileName = Guid.NewGuid().ToString(); 

     FileName = FileName + System.IO.Path.GetExtension(file.FileName); 

     SaveFileName = FileName; 

     file.SaveAs(FullPath + "/" + FileName); 
     return true; 
    } 
} 

// पोस्ट कार्रवाई

[HttpPost] 
    public ActionResult AddImage(FormCollection Form) 
    { 

     FileUpload fileupload = new FileUpload(); 
     var image=""; 

     HttpPostedFileBase file = Request.Files["Img"]; 

     if (file.FileName != null && file.FileName != "") 
     { 

      if (upload.ContentLength > 0) 
      { 

        fileupload.SaveFile(Request.Files["Img"], Server.MapPath(AppSetting.ReadAppSetting("UploadFolerPath"))); 

       image = fileupload.SaveFileName; 

       // write here your Add/Save function 

       return Content(image); 


      } 
     } 
     else 
     { 
        //return....; 
     } 

    } 
संबंधित मुद्दे