Страница 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