2013-10-30 6 views
5

मैं अपने नियंत्रक को एक फ़ाइल को HttpPostedFileBase के रूप में पास करने का प्रयास कर रहा हूं, इसलिए मैं फ़ाइल के माध्यम से पार्स कर सकता हूं और पृष्ठ पर जानकारी पास कर सकता हूं। उदाहरण के लिए, मैं किसी उपयोगकर्ता को vCard आयात करने की अनुमति देना चाहता हूं, और यह स्वचालित रूप से एक संपर्क निर्माण फ़ॉर्म PartialView को पॉप्युलेट कर सकता है।क्या jQuery फ़ाइल का उपयोग कर एक फ़ाइल इनपुट से एक फ़ाइल को एक फ़ाइल पास करना संभव है?

मैं फ़ाइल में गुजरकर, मेरे मॉडल को पॉप्युलेट करके और पृष्ठ पर प्रदर्शित करने के लिए फॉर्म का आंशिक दृश्य वापस करके ऐसा करना चाहता हूं। मैंने jQuery की तरह नीचे की कोशिश की है, लेकिन मैं कभी भी मेरे HttpPostedFileBase को ठीक से पास करने के लिए कभी नहीं मिल सकता (हमेशा शून्य)। ध्यान में रखते हुए कि मुझे एक बार पोस्ट की गई फ़ाइल के इनपुटस्ट्रीम तक पहुंचने की आवश्यकता है।

var file = "files=" + $("#fileInput").files[0]; 
$.post("/Contacts/UploadContact/", file, function (returnHtml) { 
    alert(returnHtml); 
    $("#contactContainer").html(returnHtml); 
}); 

क्या मेरे नियंत्रक को फ़ाइल को एचटीपीपोस्टेडफाइलबेस के रूप में jQuery के माध्यम से पोस्ट करना संभव है?

+2

अजाक्स फ़ाइल अपलोड तुच्छ नहीं हैं। शायद यह प्लगइन आपकी मदद कर सकता है: http://malsup.com/jquery/form/ –

+0

क्या यह AJAX होना चाहिए? Enctype = "मल्टीपार्ट/फॉर्म-डेटा का उपयोग करने के लिए सरल – avrono

+0

@avrono यह सच है, लेकिन चूंकि वह एक jQuery 'पोस्ट()' का उपयोग कर रहा है, मुझे लगता है कि उसे एक AJAX समाधान –

उत्तर

12
Same result can be achieved without `jquery` usage, merely you can use `XMLHttpRequest` 
Example: 

**Index.cshtml** 

    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 
    <script src="@Url.Content("~/Scripts/scripts.js")" ></script> 
    <input type="file" id="fileInput" /> 
    <input type='button' id='go' value="go" /> 

$('#fileInput').on("change", function() {  

      var xhr = new XMLHttpRequest(); 
      var VideofileS = new FormData($('form').get(0)); 
      xhr.open("POST", "/Contact/UploadContact/"); 
      xhr.send(VideofileS); 
      xhr.addEventListener("load", function (event) { 
      alert(event.target.response); 
      }, false); 
    }); 
    }); 
+0

+1 सबसे संक्षिप्त, गैर-आईफ्रेम फ़ाइल अपलोड उदाहरण मैंने अभी तक पाया है। धन्यवाद! – SetFreeByTruth

+0

मैं इस मामले में नियंत्रक से मूल्य कैसे वापस कर सकता हूं। जेसन (नया {सफलता = टी rue, returnPath = UIFilePath}, JsonRequestBehavior.AllowGet); –

+0

यह कई फ़ाइलों के लिए काम नहीं करता –

0

बहुत बढ़िया अजाक्स अपलोड फ़ंक्शन।

यदि आपके पास एकाधिक फ़ाइल अपलोड नियंत्रण हैं, तो उन्हें अलग आईडी दें और उन सभी को अपलोड करने के लिए निम्न कार्य करें।

fd.append("file1", document.getElementById('fileInput').files[0]); 
fd.append("file2", document.getElementById('fileInput').files[1]); 
fd.append("file3", document.getElementById('fileInput').files[2]); 
fd.append("file4", document.getElementById('fileInput').files[3]); 
संबंधित मुद्दे