使用ajax获取文件夹中的文件数

时间:2015-02-14 15:58:30

标签: javascript php jquery ajax

我正在尝试获取文件夹中的文件数量并将其与maxfiles进行比较

我在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功能。

1 个答案:

答案 0 :(得分:1)

我以前使用php来获取文件和文件夹的数量,但我发现ajax能够做到这一点。

当我向服务器上的某个文件夹发送jquery get请求时,这是来自真实项目的典型响应

请求:

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

})

<强>响应

"<!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,你会发现它看起来像一个文件浏览器 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           
        }

    });