2012-11-09 16 views
10

मैं bluimp jQuery-File-Upload-plugin का उपयोग कर रहा हूं। कुछ फ़ाइलों का चयन करने और उन्हें अपलोड करने में कोई समस्या नहीं है, लेकिन जब मैं पृष्ठ को रीफ्रेश किए बिना अन्य फ़ाइलों को अपलोड करना चाहता हूं, तो पहले लोग फिर से अपलोड हो रहे हैं। मेरा सवाल यह है कि मैं अपलोड होने के बाद फ़ाइलों को "अनसेट" कैसे कर सकता हूं। यहाँ मेरी sourcecodeब्लूंप फ़ाइल अपलोड प्लगइन के साथ केवल एक बार फ़ाइल कैसे अपलोड करें?

जावास्क्रिप्ट है:

$('#MappeFile').fileupload({ 
     dataType : 'json', 
     autoUpload : false, 
     maxNumberOfFiles : undefined, 
     maxFileSize : 6000000, 
     minFileSize : undefined, 
     acceptFileTypes : /.+$/i, 
     url : "/ajax/UploadFile.php", 
     add : function(e, data) { 
      $("#testUploadButton").on("click", function() { 
        $('#progress .bar').show(); 
        if ($.browser.msie && parseInt($.browser.version, 10) < 10) { 
         $('#progress .bar').css({ 
          "background" : "url(images/progressbar.gif) no-repeat", 
          "width" : "100%" 
         }) 
        } else { 
         $('#progress .bar').css({ 
          'background-color' : "#2694E8", 
          'width' : '0%' 
         }); 
        } 
       data.submit(); 
      }) 
     }, 
     change : function(e, data) { 
      $.each(data.files, function(index, file) { 
       console.info('Selected file: ' + file.name); 
       filesCount++; 
      }); 
     }, 
     drop: function(e, data) { 
      $.each(data.files, function(index, file) { 
       console.info('Selected file: ' + file.name); 
       filesCount++; 
      }); 
     }, 
     done : function(e, data) { 
      $.each(data.result, function(index, file) { 
       vOutput = "<tr>"; 
       vOutput += "<td>" + file + "</td>"; 
       vOutput += "<tr>"; 
       $("#MappeFileListe").append(vOutput); 
       filesUploaded++; 
       if (filesCount == filesUploaded) { 
        filesUploaded = 0; 
        filesCount=0; 
        $('#progress .bar').hide(); 
       } 
      }); 
     }, 
     progressall : function(e, data) { 
      var progress = parseInt(data.loaded/data.total * 100, 10); 
      $('#progress .bar').css('width', progress + '%'); 
     } 
    }); 

HTML:

<div id="KundeMappe"> 
    <form id="MappeFile"> 
     <input type="file" id="MappeFileSelect" name="files[]" data-url="ajax/UploadFile.php" multiple/> 
     <div id="progress"> 
      <div class="bar" style="width: 0%;"></div> 
     </div> 
     <input type="button" class="neuButton" value="upload" id="testUploadButton"/> 
    </form> 
    <table id="MappeFileListe"></table> 
</div> 

उत्तर

19

मैं इस सवाल का जवाब अपने आप को पाया - यह अपलोड करने के बाद बटन पर क्लिक करें घटना निकल करने के लिए पर्याप्त है:

add : function(e, data) { 
      $("#testUploadButton").on("click", function() { 
        $('#progress .bar').show(); 
        if ($.browser.msie && parseInt($.browser.version, 10) < 10) { 
         $('#progress .bar').css({ 
          "background" : "url(images/progressbar.gif) no-repeat", 
          "width" : "100%" 
         }) 
        } else { 
         $('#progress .bar').css({ 
          'background-color' : "#2694E8", 
          'width' : '0%' 
         }); 
        } 
       data.submit(); 
       $("#testUploadButton").off("click") 
      }) 
     }, 
+1

मुझे एक ही समस्या है। लेकिन आपके समाधान के साथ यह अभी भी सभी अन्य अनुरोधों को दबा देता है, फिर भी स्मृति आवंटित करता है। अपलोड कतार में चयनित फ़ाइलों को जोड़ने से बचने के लिए फ़ाइलों की संख्या को कैसे प्रतिबंधित करें? 'MaxNumberOfFiles: 1' सेट करना मेरे लिए काम नहीं करता है। – static

+1

'$ ("# testUploadButton") सेट करना बेहतर है (नए "$ (" # testUploadButton ") से पहले (" # testUploadButton ") बंद करें (" क्लिक करें ", फ़ंक्शन() {...}' – static

+3

आपका समाधान सही जवाब प्रतीत नहीं होता है, लेकिन यह मेरे लिए चाल बहुत बहुत धन्यवाद। – VahidNaderi