← Вернуться к списку тем

Сохранение файлов из чата

Доброе день, заинтересовал ваш бот для сохранения фотографий
https://imakebots.ru/article/poluchenie-botom-media-faylov-i-sohranenie-ih-na-svoem-servere
Подскажите, пожалуйста, как его модернизировать, под следующие задачи:
мне отправляют много фотографий и видео и их надо сохранять в разные папки. Я не программист, но постараюсь разобраться что необходимо сделать.
Например, человек пишет "/save фото - горы" где «фото – горы» - директория для сохранения, в которой создается подпапка с датой дня отправления фото.
Если я все правильно понимаю, то я должен проверить если пришло сообщение /save, то мы должны создать папку по следующему пути: Y:Фото – горы2020.09.22 если ее нет, если есть, то сохранить файлы в папке с текущей датой.
Мне надо будет использовать:
mkdir("../newfolder");
- для создания папки
и
$date("Y.m.d")
– для названия папки

Таким образом должно получиться что-то вроде:
if (!mkdir(."/".date("Y.m.d")."/"), true);
$this->sendMessage($chat_id, "Папка создана");
else {
            	// если пришло что-то другое
                $this->sendMessage($chat_id, "Не удалось создать папку, обратитесь к администратору");
            }

Надо ли указывать $recursive в функции mkdir для создания поддиректории?
После выполнения функции приходит ответ создалась папка или нет:

Название файла я планирую сделать так:
// назначаем свое имя здесь год-месяц-день часы:минуты:секунды.расширение_файла
        $name_our_new_file =date("Y-m-d H:i:s").".".$ext;
        return copy($file_from_tgrm, "img/".$name_our_new_file);

Будет ли это работать? И как его можно модернизировать?

Второй вопрос как сохранять все файлы. Их может быть не 1, а, например, 10 (в том числе и видео)….

Ответы


  • iMakeBots [22.09.2020 в 09:18 → Лев Солдаткин]
    1. Вам определенно надо принимать файл с указанным описанием в виде команды /save название_файла
    2. Вы проверяете какой тип сообщения пришел, если это то что вы ждете (photo, video)б то вы вытаскиваете описание файла - парсите его на наличие нужной команды /save
    3. Если и команда и файл вас устраивают (размер, расширение, еще какие-то требования), тогда вы получаете название из того же описания (в случае если его нет - то возможно по умолчанию) - загружаете файл во временную директорию
    4. Если файл загрузился без проблем - тогда уже создаете директории по названию и дате - и перемещаете в них файл с удалением из временной директории.
    5. Учтите что директорий у вас может быть куча подобных - так как пользователи пишут не всегда одинаковы одни и те же слова

    По второму вопросу - файлы которые прилетают группой - они идут друг за другом в тех же форматах как если бы они прилетали по одиночке - с одним отличием - у них есть доп-параметр, что они загружены и отправлены как медиа-группа