2012-03-06 12 views
12

मैं asp.netको अक्षम करने से स्वत: अपलोड करने अपलोड

का उपयोग कर मैं एक स्थिति है जहाँ मैं एक पृष्ठ है एक श्रेणी का चयन करने के लिए उपयोगकर्ता की अनुमति के लिए फ़ाइलों को अपलोड करने blueint jquery.fileupload प्लगइन का उपयोग कर रहा), एक शीर्षक (अपलोड की गई फ़ाइल - टेक्स्टबॉक्स के लिए) और एक फ़ाइल इनपुट (प्लगइन द्वारा संभाला गया)।

प्लगइन: https://github.com/i-e-b/jQueryFileUpload.Net

जावास्क्रिप्ट/jQuery:

$('#fileup').fileupload({ 
        replaceFileInput: false, 
        formData: function (form) { 
         return [{ name: 'dcat', value: $('#ddlCats').val() }, { name: 'title', value: $('#txtTitle').val()}]; 
        }, 
        dataType: 'json', 
        url: '/_handlers/FileHandler.ashx', 
        add: function (e, data) { 
         var valid = true; 
         var re = /^.+\.((doc)|(xls)|(xlsx)|(docx)|(pdf)|(pts))$/i; 
         $.each(data.files, function (index, file) { 
          if (!re.test(file.name)) { 
           $('#uploaded').html('This file type is not supported'); 
           valid = false; 
          } 
         }); 
         if (valid) 
          data.submit(); 
        }, 
        done: function (e, data) { 
         $.each(data.result, function (index, file) { 
          $('#uploaded').html(file); 
         }); 
         GetFiles($('#ddlCats').val()) 
        }, 
        error: function() { 
         alert('An error occured while uploading the document.'); 
        } 
       }); 

एचटीएमएल:

<div id="fUpload"> 
<span style="font-weight:bold;">Yeni Belge:</span><br /> 
    <table class="ktoeos"> 
     <tr> 
      <td>Category:</td> 
      <td> <select id="ddlCats"></select></td> 
     </tr> 
     <tr> 
      <td>Document Description:</td> 
      <td><input type="text" id="txtTitle" /></td> 
     </tr> 
     <tr> 
      <td>Select Document:</td> 
      <td><input type="file" name="file" id="fileup" /></td> 
     </tr> 
     <tr> 
      <td colspan="2"><input type="submit" id="btnSubmit" value="Upload" /></td> 
     </tr> 
    </table> 
    <div id="uploaded"></div> 

मेरे समस्या, फ़ाइल अपलोड हो जाता है (एक http हैंडलर के माध्यम से) सीधे मैं के बाद किसी फाइल का चयन करें। मैं इसके साथ अन्य फॉर्म डेटा जमा करने के लिए इसे संभाल सकता हूं, हालांकि, मैं इस घटना को बटन सबमिट करने के लिए आग लगाना चाहता हूं क्योंकि मुझे कुछ सत्यापन करने की आवश्यकता है। इसके अलावा उपयोगकर्ता पहले फ़ाइल का चयन करना चाह सकता है और उसके बाद फॉर्म के अन्य हिस्सों को भर सकता है, जो इस मामले में वह नहीं कर सकता है, फॉर्म जमा होने से पहले वह ऐसा कर सकता है।

चूंकि मैं बहुत अच्छा जावास्क्रिप्ट प्रोग्रामर नहीं हूं, मुझे पता नहीं है कि प्लगइन के साथ उपलब्ध .js फ़ाइलों में यह कार्यक्षमता पहले से उपलब्ध है (जो शायद है)। कोई विचार जो मुझे बदलने या करने की ज़रूरत है?

उत्तर

6

यह वहाँ के रूप में एक विकल्प " autoUpload: true" आप false के लिए इसे बदल तो जो jquery.fileupload-ui.js

में डिफ़ॉल्ट के रूप में सेट कर दिया जाता है ऐसा करने के लिए बहुत आसान है और आप मैन्युअल रूप से घटना बटन पर क्लिक करें पर कोड कर सकते हैं।

+0

उत्तर के लिए धन्यवाद, मैं उस फ़ाइल को तो मैं डाउनलोड किया है और अपने प्रोजेक्ट में और प्रासंगिक पृष्ठ के शीर्ष पर यह शामिल नहीं था। फिर सुझाए गए अनुसार ऑटोउप्लोड को गलत में बदल दिया लेकिन कुछ भी नहीं बदला। जैसे ही मैं फ़ाइल का चयन करता हूं, फिर भी अपलोड करता है। क्या मुझे कोड में कुछ भी बदलने की ज़रूरत है? मेरे पास इन फ़ाइलों को शामिल किया गया है। हो सकता है इसके बारे में कुछ है: + jQuery-1.7.js + jQuery ui को-1.8.17.custom.min.js + jquery.fileupload.js + jquery.iframe-transport.js + jQuery। fileupload-ui.js –

+0

@ एमीन-यहां jquery fileupload-ui.js का पथ है, जिससे आपने लिंक दिया है jQueryFileUpload.Net/jQueryFileUpload/स्क्रिप्ट/डिफ़ॉल्ट/jquery.fileupload-ui.js (या) आप कर सकते हैं यहां से एएसपी.Net कार्यान्वयन पाएं http://www.webtrendset.com/2011/06/22/complete-code-example-for-using-blueimp-jquery-file-upload-control-in-asp-net/ – coder

+0

@ इस पेज पर Emin-Go https://github.com/blueimp/jQuery-File-Upload/downloads नवीनतम संस्करण डाउनलोड करें और इसे समाधान एक्सप्लोरर में खोलें और जेएस फ़ोल्डर पर नेविगेट करें और उसमें आप jquery.fileupload- ui.js और autoupload के लिए खोजें और इसे 'tr' के बजाय 'false' पर सेट करें ue '। और यदि आप बूटस्ट्रैपर का उपयोग करना चाहते हैं तो आपको Jquery 1.7+ – coder

17

add कॉलबैक को विजेट में जोड़े जाने के तुरंत बाद कॉलबैक लागू किया जाता है, इसलिए आपको अपलोड को रोकने के लिए इसे ओवरराइड करने की आवश्यकता होती है और फिर इसे बटन क्लिक से शुरू करने की आवश्यकता होती है।

add: function (e, data) { 
    $("#btnSubmit").click(function() { 
     // validate file... 
     if(valid) 
      data.submit(); 
    }); 
} 

अद्यतन: प्रलेखन अब इस का एक better example है:

+5

बिल्कुल वही जो मैं खोज रहा था। एकमात्र समस्या यह है कि टेक्स्टबॉक्स फ़ाइलपैथ नहीं दिखाता है .. – ffffff01

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