Страница 1 из 2
Удалить вложения " с Выбранными"
Добавлено: 09 янв 2024, 10:36
believe
Коллеги, приветствую!
Есть необходимость очистить поле вложение (удалить фотки), есть у кого идея как это сделать массово (С выбранными)?
Re: Удалить вложения " с Выбранными"
Добавлено: 09 янв 2024, 19:50
Fait
believe писал(а): ↑09 янв 2024, 10:36
Коллеги, приветствую!
Есть необходимость очистить поле вложение (удалить фотки), есть у кого идея как это сделать массово (С выбранными)?
Можно сделать автоматизацию при удалении записи.
Re: Удалить вложения " с Выбранными"
Добавлено: 09 янв 2024, 22:10
believe
Удалять записи не нужно, а нужно очищать вложения в поле записи
Re: Удалить вложения " с Выбранными"
Добавлено: 09 янв 2024, 23:12
Fait
Аа, понял!
Кстати да, хороший вопрос!
Должна же быть какая-то функция для удаления файла с сервера.
Пока что я себе представляю это всё-равно через автоматизацию с PHP скриптом.
Как получить имя и расположение файла, я знаю, но что дальше?...
Если только через PHP отправить команду на сервер для удаления файла. А затем опустошить само поле через items::update_by_id()
Re: Удалить вложения " с Выбранными"
Добавлено: 10 янв 2024, 06:48
believe
Подскажи, а как получить расположение файла?
Re: Удалить вложения " с Выбранными"
Добавлено: 12 янв 2024, 03:09
Fait
believe писал(а): ↑10 янв 2024, 06:48
Подскажи, а как получить расположение файла?
Вот так можно получить путь к файлу, как относительный, так и полный:
Код: Выделить всё
$f = [777]; // Поле с файлом (одна штука)
$file = attachments::parse_filename($f);
if ($_SERVER['HTTPS'] == 'on') { // Определяем префикс
$pref = 'https://';
}
else {
$pref = 'http://';
}
$short_name = $file['file_path']; // В эту переменную записывается относительный путь к файлу
$full_name = $pref.$_SERVER['HTTP_HOST'].'/'.$file['file_path']; // В эту переменную записывается полный путь к файлу
if (is_file($short_name)) { // Проверка существования файла
// Тут описываем действия
}
Re: Удалить вложения " с Выбранными"
Добавлено: 12 янв 2024, 03:37
Fait
А вообще, для удаления файла вот такой код можно использовать:
Код: Выделить всё
if (!unlink($short_name)) {
echo ("Файл не может быть удалён!");
}
else {
echo ("Файл удалён!");
}
Re: Удалить вложения " с Выбранными"
Добавлено: 12 янв 2024, 03:41
Fait
И вообще, вот итоговый код:
Код: Выделить всё
$f = [777]; // Поле с файлом (одна штука)
$file = attachments::parse_filename($f);
if ($_SERVER['HTTPS'] == 'on') { // Определяем префикс
$pref = 'https://';
}
else {
$pref = 'http://';
}
$short_name = $file['file_path']; // В эту переменную записывается относительный путь к файлу
$full_name = $pref.$_SERVER['HTTP_HOST'].'/'.$file['file_path']; // В эту переменную записывается полный путь к файлу
if (is_file($short_name)) { // Проверка существования файла
unlink($short_name); // Удаляем файл
}
Если нужно использовать
$full_name, то подставляет его соответственно в команду удаления.
Re: Удалить вложения " с Выбранными"
Добавлено: 12 янв 2024, 03:59
Fait
Итак, решил я всё-таки испробовать код у себя, и вот этот вариант работает прекрасно, и причём с удалением множества вложений:
Код: Выделить всё
$f = [777]; // Поле с файлами
$f_arr = explode(',',$f);
foreach ($f_arr as $key => $value) {
$file = attachments::parse_filename($value);
$link = $file['file_path']; // Путь к файлу
if (is_file($link)) { // Проверяем существование файла
unlink($link); // Удаляем файл
}
}
Re: Удалить вложения " с Выбранными"
Добавлено: 15 янв 2024, 09:16
believe
Проверил, работает, благодарю! Вот только оставляет файлы с 0