我的问题是,当我从机器人程序信使中保存图像时,他们看到了每个事件,然后开始工作,因此我计算目录中的文件数(在其中保存图像),并且我希望图像名称为 1.jpg 2.jpg 3.jpg
if($typeMessage=='image'){
$responseMedia = $bot->getMessageContent($idMessage);
$dataBinary = $responseMedia->getRawBody();
$files = scandir($botDataUserFolder);
$num_files = count($files)-2;
$filenamesave = $num_files.'.'.jpg;
file_put_contents($fileFullSavePath,$dataBinary);
}
请让我知道这段代码有什么问题?我仍然将图像另存为0.jpg或1.jpg,它们会覆盖旧文件
答案 0 :(得分:0)
您遇到的问题是要进行计数的代码($ files)-2;
但是在php函数“ scandir”中,您总是会收到另外的点目录(当前目录和父目录)。
第一次调用计数($ files)-2将返回0,而系统将创建0.jpg
尝试此代码,它将使用FilesystemIterator :: SKIP_DOTS:自动跳过点。
$save_path = "/tmp/dir_to_save";
$filesystem_iterator = new FilesystemIterator($save_path,
FilesystemIterator::SKIP_DOTS);
$number_of_files = iterator_count($filesystem_iterator);
$filename_save = ($number_of_files + 1) . '.jpg';
file_put_contents($save_path . DIRECTORY_SEPARATOR . $filename_save, "binary file data");
您需要为您的方法稍作调整,但它可以正常工作。