2017-10-24 26 views
7

Ứng dụng khách của tôi đang sử dụng phiên bản lớp học cũ, đây là số github repo Tôi đã tìm thấy nhưng những gì anh ấy đang sử dụng cũ hơn nhiều. Chạy phiên bản Wordpress mới nhất. Nó đi kèm với plupload, một số phiên bản cũ, không thể tìm thấy phiên bản trong chủ đề. Đây là Functions.php, đây là plupload. Here's the html of my page, không cần phải nhìn thấy nó, nhưng tôi đặt nó ở đó vì trang được bảo vệ vì vậy đó là cách duy nhất để kiểm tra toàn bộ mã nếu bạn muốn.Giới hạn số lượng tải lên trong plupload

tôi muốn thêm khả năng tải lên nhiều ảnh cùng một lúc, để làm điều đó, tôi thêm 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; } 

Nhưng tôi không biết làm thế nào để ngăn chặn người dùng tải lên hơn 8 hình ảnh? Tôi đã thử thêm max_filesmax_files_countmax_file_count và không có gì hiệu quả, tôi thậm chí đã sửa đổi mã nguồn của chính plugin đó và js và không có gì hoạt động. Tôi muốn ngăn người dùng tải lên hơn 8 hình ảnh.

Sau khi tôi từ bỏ plupload, tôi đã cố gắng làm việc đó sử dụng jQuery, một lần nữa đã không làm việc

/* 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(); 
    } 
}); 

Sửa

pluploadjs here My. FilesAdded

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(); 
    }); 

tôi sửa đổi nó để trông giống như rất

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(); 
    }); 

Có phải đó là tất cả? Nó sẽ hoạt động ngay bây giờ? Tôi chưa thử nghiệm nó bởi vì nó sẽ cung cấp lỗi

+0

Tôi đã cố gắng hỏi trên diễn đàn plupload http://www.plupload.com/punbb/register.php nó nói 'diễn đàn này không được chấp nhận đăng ký mới. Gửi câu hỏi của bạn để StackOverflow thay thế (với một thẻ "plupload"). 'Tôi đã cố gắng hỏi về github quá, tôi hy vọng sẽ nhận được một câu trả lời – Lynob

+0

điều này có thể giúp: https://stackoverflow.com/a/15520225/1236044 – jbl

+0

@jbl xin vui lòng đọc chỉnh sửa của tôi và cho tôi biết nếu nó sẽ làm việc bây giờ – Lynob

Trả lời

1

Tôi không chắc nhưng mã của bạn hầu như sẽ hoạt động. Tôi nghĩ bạn nên xóa thủ công các tệp khỏi hàng đợi bằng cách gọi phương thức removeFile.

Có thể thử mã này:

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

gần như ở đó, làm việc một lần tuy nhiên tôi vẫn có https://pastebin.com/04UDCBxY – Lynob

+0

Đó là một stacktrace, vì vậy bạn sẽ có thể theo dõi nó trở lại dòng chính xác của mã nơi điều này xảy ra. Có lẽ nơi bạn sử dụng và 'id' của một đối tượng không xác định. Đảm bảo bạn không sử dụng đối tượng tệp đã bị xóa. –

+0

sẽ dùng thử sau, tôi cho bạn tiền thưởng vì nó sắp hết hạn và tôi không có thời gian để kiểm tra – Lynob

Các vấn đề liên quan