在处理文件时显示文件名

时间:2014-05-23 16:14:06

标签: php jquery list

我想在DIV中列出已处理的每个文件。 示例:处理完文件#1后,在DIV中显示文件名。处理完文件#2后,执行相同的操作,但将其附加到文件#1下,依此类推文件。


的jQuery

var request = $.ajax({
    url: 'manage-images.php',
    type: 'GET',
    cache: false,
    beforeSend: function() {
        $('#photos').html('<div class="centered color-blue">Processing. Please wait...</div>');
    }
});

request.done(function(s) {
    $('#photos').append(s);
});

request.fail(function(s) {
    $('#photos').html('Something went wrong!');
});

管理-images.php

$dir = new RecursiveDirectoryIterator('folder-name/here', FilesystemIterator::SKIP_DOTS);
$it  = new RecursiveIteratorIterator($dir, RecursiveIteratorIterator::SELF_FIRST);
$it->setMaxDepth(1);

foreach($it AS $fileinfo) {
    if($fileinfo->isFile()) {
        // functions and stuff...

        echo $fileinfo->getFilename().' - done<br>';
    }
}

1 个答案:

答案 0 :(得分:0)

问题是您一次处理服务器端的所有照片。我认为您需要重新考虑您的架构,并一次处理一张照片。当您收到第一张处理过的照片的回复时,请附上文件名,然后再拨打电话处理下一张照片。

这是一个很好的例子: How to get multiple responses from PHP file via AJAX?

编辑:您的新问题&#34;网站如何知道下一个文件&#34;。我的PHP不是很好,但我希望这可以解决这个问题。只需让您的服务器端页面一次处理一张照片。

$dir = new RecursiveDirectoryIterator('folder-name/here', FilesystemIterator::SKIP_DOTS);
$it  = new RecursiveIteratorIterator($dir, RecursiveIteratorIterator::SELF_FIRST);
$it->setMaxDepth(1);

//If there is a photo to be processed
if ( count($it) > 0)
{
  $fileinfo = $it[0];
  if($fileinfo->isFile()) 
  {
        // functions and stuff...    
        echo $fileinfo->getFilename().' - done<br>';
  }
}
else
{
     echo "NO_PHOTOS";
}    

然后在客户端,在jQuery中,你会检查响应是&#34; NO_PHOTOS&#34;。这就是你如何知道停止从jQuery处理。