2017-10-24 25 views
7

में अपलोड की संख्या सीमित करें मेरा ग्राहक पुराने क्लासिप्रेस संस्करण का उपयोग कर रहा है, यहां एक github repo मिला है लेकिन वह जो भी उपयोग कर रहा है वह बहुत पुराना है। नवीनतम वर्डप्रेस संस्करण चल रहा है। यह plupload के साथ आता है, कुछ पुराने संस्करण, विषय में संस्करण नहीं मिला। यहां Functions.php है, यहां plupload है। Here's the html of my page, इसे देखने की कोई ज़रूरत नहीं है, लेकिन मैं इसे वहां डाल रहा हूं क्योंकि पृष्ठ सुरक्षित है, इसलिए यदि आप चाहें तो पूरे कोड का निरीक्षण करने का यही एकमात्र तरीका है।plupload

मैं एक ही समय में एक से अधिक चित्रों को अपलोड करने के लिए, कि, मैं this जोड़ने functions.php को

add_filter('appthemes_plupload_config', 'enable_plupload_multisel', 10 ,1); 
function enable_plupload_multisel($app_plupload_config){ 
$app_plupload_config['plupload']['multi_selection'] = true; 
return $app_plupload_config; } 

करने की क्षमता जोड़ना चाहते हैं लेकिन मैं अपलोड करने से उपयोगकर्ता को रोकने के लिए पता नहीं कैसे 8 से अधिक चित्र? मैंने max_files और max_files_count और max_file_count जोड़ने की कोशिश की और कुछ भी काम नहीं किया, मैंने प्लगइन के स्रोत कोड को भी संशोधित किया और जेएस और कुछ भी काम नहीं किया। मैं उपयोगकर्ता को 8 से अधिक छवियों को अपलोड करने में सक्षम होने से रोकना चाहता हूं।

बाद मैं plupload पर छोड़ दिया, मैं jQuery का उपयोग कर यह कर की कोशिश की, फिर

/* prevent form submission if user selects more than 8 pics */ 
jQuery('#app-attachment-upload-pickfiles').change(function() { 
    if (this.files.length > 8) { 
     alert('Uploading more than 8 images is not allowed'); 
     this.value = ''; 
    } 
}); 
// Prevent submission if limit is exceeded. 
jQuery('#mainform').submit(function() { 
    if (this.files.length > 8) { 
     jQuery('#app-attachment-upload-pickfiles').hide(); 
     jQuery('#step1').hide(); 
     return false; 
    } else { 
     jQuery('#app-attachment-upload-pickfiles').show(); 
     jQuery('#step1').show(); 
    } 
}); 

काम नहीं किया संपादित

मेरे pluploadjs hereFilesAdded

attachUploader.bind('FilesAdded', function(up, files) { 
     jQuery.each(files, function(i, file) { 
      jQuery('#app-attachment-upload-filelist').append(
       '<div id="' + file.id + '" class="app-attachment-upload-progress">' + 
       file.name + ' (' + plupload.formatSize(file.size) + ') <b></b>' + 
       '</div>'); 

      window.appFileCount += 1; 
      APP_Attachment.hideUploadBtn(); 
     }); 

     up.refresh(); 
     attachUploader.start(); 
    }); 

मैं यह इतना

attachUploader.bind('FilesAdded', function(up, files) { 
     var maxfiles = 8; 
      if(up.files.length > maxfiles) 
      { 
       up.splice(maxfiles); 
       alert('no more than '+maxfiles + ' file(s)'); 
      } 
      if (up.files.length === maxfiles) { 
       $('#app-attachment-upload-filelist').hide("slow"); // provided there is only one #uploader_browse on page 
      } 
     jQuery.each(files, function(i, file) { 
      jQuery('#app-attachment-upload-filelist').append(
       '<div id="' + file.id + '" class="app-attachment-upload-progress">' + 
       file.name + ' (' + plupload.formatSize(file.size) + ') <b></b>' + 
       '</div>'); 

      window.appFileCount += 1; 
      APP_Attachment.hideUploadBtn(); 
     }); 

     up.refresh(); 

     attachUploader.start(); 
    }); 

तरह देखने के लिए वह सब है संशोधित? क्या यह अब काम करेगा? मैंने इसका परीक्षण नहीं किया है क्योंकि यह त्रुटियों को

+0

मैं plupload मंच http://www.plupload.com/punbb/register.php यह कहता है पर पूछ की कोशिश की 'यह मंच नए पंजीकरण स्वीकार नहीं कर रहा:

हो सकता है कि इस कोड का प्रयास करें। इसके बजाय StackOverflow पर अपने प्रश्न पोस्ट करें (एक टैग "प्लूपलोड" के साथ)। 'मैंने भी जिथब पर पूछने की कोशिश की, मुझे उम्मीद है कि – Lynob

+0

उत्तर देने में मदद मिलेगी: https://stackoverflow.com/a/15520225/1236044 – jbl

+0

@jbl कृपया मेरा संपादन पढ़ें और मुझे बताएं कि क्या यह अब – Lynob

उत्तर

1

मुझे यकीन नहीं है लेकिन आपका कोड लगभग काम करना चाहिए। मुझे लगता है कि आपको removeFile विधि को कॉल करके मैन्युअल रूप से कतार से फ़ाइलों को हटा देना चाहिए।

attachUploader.bind('FilesAdded', function(up, files) { 
     var maxfiles = 8; 

     // remove all new files after the max of files 
     jQuery.each(up.files, function(i, file) { 
      if(i > maxfiles){ 
       up.removeFile(file); 
      } 
     });  
}); 
+0

लगभग एक बार काम करता है, हालांकि मेरे पास अभी भी यह https://pastebin.com/04UDCBxY – Lynob

+0

है stacktrace, तो आप इसे कोड की सटीक रेखा पर वापस ढूंढने में सक्षम होना चाहिए जहां यह होता है। शायद आप एक अपरिभाषित वस्तु का उपयोग और 'आईडी' कहां उपयोग करते हैं। सुनिश्चित करें कि आप उस फ़ाइल ऑब्जेक्ट का उपयोग नहीं करते जो पहले ही हटा दिया गया था। –

+0

इसे बाद में आज़माएगा, मैं आपको बक्षीस देता हूं क्योंकि यह समाप्त होने जा रहा था और मेरे पास इसका परीक्षण करने का समय नहीं है – Lynob

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