我想在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>';
}
}
答案 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处理。