我想将文件名另存为1.jpg 2.jpg ... 10.jpg

时间:2019-06-16 16:48:15

标签: php

我的问题是,当我从机器人程序信使中保存图像时,他们看到了每个事件,然后开始工作,因此我计算目录中的文件数(在其中保存图像),并且我希望图像名称为 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,它们会覆盖旧文件

1 个答案:

答案 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");

您需要为您的方法稍作调整,但它可以正常工作。