2015-02-14 5 views
0

Я пытаюсь получить количество файлов в папке и сравнить его с MAXFILESполучить количество файлов в папке с AJAX

У меня есть функция в dropzone.js

Dropzone.prototype._updateMaxFilesReachedClass = function() { 

     if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) { 
     if (this.getAcceptedFiles().length === this.options.maxFiles) { 
      this.emit('maxfilesreached', this.files); 
     } 
     return this.element.classList.add("dz-max-files-reached"); 
     } else { 
     return this.element.classList.remove("dz-max-files-reached"); 
     } 
    }; 

Я хотел бы поставить количество файлов вместо this.getAcceptedFiles().length

Я попробовал это ти:

$.get('handler.php?action=count' , function(data) {return data;}) === maxFiles) 

Но я не знаю, как вернуть номер, если это возможно.

файл handler.php?action=count номер возвращаемого номера, но у меня есть идея, как можно получить это число и использовать функцию dropzone.

+0

Попробуйте [введите ссылку здесь] [1] [1]: http://stackoverflow.com/a/18160399/4560292 –

ответ

1

Раньше я использовал php для получения количества файлов и папок, но я обнаружил, что ajax способен сделать это просто.

Это типичный ответ от реального проекта, когда я послал запрос JQuery получить к некоторой папке, которая живет на моем сервере

Запрос:

$.ajax({ 
    url: "projects/"+current_project+"/img/" 

}) 

Response

"<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> 
<html> 
<head> 
    <title>Index of /dumar/projects/dumar/img</title> 
</head> 
<body> 
<h1>Index of /dumar/projects/dumar/img</h1> 
    <table> 
    <tr><th valign="top"><img src="/icons/blank.gif" alt="[ICO]"></th><th><a href="?C=N;O=D">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th><a href="?C=D;O=A">Description</a></th></tr> 
    <tr><th colspan="5"><hr></th></tr> 
<tr><td valign="top"><img src="/icons/back.gif" alt="[PARENTDIR]"></td><td><a href="/dumar/projects/dumar/">Parent Directory</a>  </td><td>&nbsp;</td><td align="right"> - </td><td>&nbsp;</td></tr> 
<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="dumar1.jpg">dumar1.jpg</a>    </td><td align="right">2015-01-21 01:04 </td><td align="right">174K</td><td>&nbsp;</td></tr> 
<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="dumar2.jpg">dumar2.jpg</a>    </td><td align="right">2015-01-21 01:05 </td><td align="right">177K</td><td>&nbsp;</td></tr> 
<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="dumar3.jpg">dumar3.jpg</a>    </td><td align="right">2015-01-21 01:06 </td><td align="right">117K</td><td>&nbsp;</td></tr> 
<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="dumar4.jpg">dumar4.jpg</a>    </td><td align="right">2015-01-21 01:06 </td><td align="right">110K</td><td>&nbsp;</td></tr> 
<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="dumar5.jpg">dumar5.jpg</a>    </td><td align="right">2015-01-21 01:19 </td><td align="right">118K</td><td>&nbsp;</td></tr> 
<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="dumar6.jpg">dumar6.jpg</a>    </td><td align="right">2015-01-21 01:19 </td><td align="right">127K</td><td>&nbsp;</td></tr> 
<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="dumar7.jpg">dumar7.jpg</a>    </td><td align="right">2015-01-21 01:20 </td><td align="right">137K</td><td>&nbsp;</td></tr> 
<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="dumar8.jpg">dumar8.jpg</a>    </td><td align="right">2015-01-21 01:20 </td><td align="right">121K</td><td>&nbsp;</td></tr> 
<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="dumar9.jpg">dumar9.jpg</a>    </td><td align="right">2015-01-21 01:39 </td><td align="right"> 88K</td><td>&nbsp;</td></tr> 
<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="dumar10.jpg">dumar10.jpg</a>   </td><td align="right">2015-01-21 01:34 </td><td align="right"> 79K</td><td>&nbsp;</td></tr> 
<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="dumar11.jpg">dumar11.jpg</a>   </td><td align="right">2015-01-21 01:35 </td><td align="right"> 78K</td><td>&nbsp;</td></tr> 
<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="dumar12.jpg">dumar12.jpg</a>   </td><td align="right">2015-01-21 01:38 </td><td align="right"> 75K</td><td>&nbsp;</td></tr> 
    <tr><th colspan="5"><hr></th></tr> 
</table> 
<address>Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.5.15 Server at 127.0.0.1 Port 80</address> 
</body></html> 

Если вы проанализируете этот html, вы увидите, что он выглядит как файл-исследователь er enter image description here

первые две строки таблицы - это заголовок таблицы и горизонтальный разделитель, а последняя строка таблицы - горизонтальный разделитель.

Вы можете просто подсчитать строки и наполнить свой html, как если бы вы с любой html-страницей.

для наглядности, я использовал этот скрипт для подсчета файлов в этом каталоге (только файлы):

$.ajax({ 
    url: "projects/"+current_project+"/img/" 

}) 
    .done(function(data) { 
    $(".project-gallery-thumbs").empty();   
    $(data).find("tbody tr a").each(function(i){ 
     if(i>=5) 
     { 

      $(".project-gallery-thumbs").append("<div class='thumb-item' style='background-image:url(projects/"+current_project+"/img/"+$(this).text()+")' data-thumb='"+$(this).text()+"'></div>") 

     } 

    }); 

Решение:

В вашем случае вы можете использовать тот же алгоритм, но вместо (игнорировать ссылки на заголовок таблицы), например:

$.ajax({ 
    url: "your folder here" 

}) 
    .done(function(data) {  
    $(data).find("tbody tr a").each(function(i){ 
     if(i>=4) 
     {   
      //this will iterate all folders and files found there   
     } 

    }); 
+0

Можете ли вы указать мне на PHP код, который делает то же самое, я хочу, чтобы получить имя файла и дату последнего изменения с помощью PHP. Спасибо – user1788736

+0

@ user1788736 да, конечно, просто задайте вопрос, чтобы я мог написать полный ответ. – ProllyGeek

Смежные вопросы