Размер вложений

Все вопросы/проблемы по установке и использовании.
Ответить
Аватара пользователя
mailarn
Инвестор
Инвестор
Сообщения: 169
Зарегистрирован: 18 июн 2021, 10:33
Имя: Антон
Откуда: Екатеринбург
Контактная информация:

Размер вложений

Сообщение mailarn »

Возникла необходимость посчитать размер файлов вложений по полям типа Поле для загрузки изображения или Поле для загрузки файла.
Желательно записывать размер файла в отдельное поле что бы потом посчитать какое количество Мб пользователь загрузил.
Кто ни будь делал такое? Поделитесь решением )
Создание отраслевых решений на базе CRM Руководитель https://webuscrm.ru
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 1197
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич
Контактная информация:

Re: Размер вложений

Сообщение Fait »

mailarn писал(а): 30 сен 2024, 20:24 Возникла необходимость посчитать размер файлов вложений по полям типа Поле для загрузки изображения или Поле для загрузки файла.
Желательно записывать размер файла в отдельное поле что бы потом посчитать какое количество Мб пользователь загрузил.
Кто ни будь делал такое? Поделитесь решением )
Да, конечно можно)
Вот код на PHP, он считает размер вложений во вложенной сущности:

Код: Выделить всё

$item_id = [id];
// 55 - сущность, в которой находятся записи с файлами
$check_files = db_query('select * from app_entity_55 where parent_item_id='.$item_id);
foreach ($check_files as $key => $value) {
  $files = $value['field_777']; // ID поля, куда пользователь загружает файлы
  $files_arr = explode(',',$files); // Собираем в отдельный массив имена файлов (для поля Вложения, где можно загрузить сразу несколько файлов)
  if ($files != '') {
    foreach ($files_arr as $key => $value) { // Перебираем массив
      $file_x = attachments::parse_filename($value); // Запрашиваем данные
      if (is_file($file_x['file_path'])) { // Если файл существует на сервере, то определяем его размер
        $size = strlen(file_get_contents($file_x['file_path'])) / 1048576; // 1048576 - столько байт в 1 МБ
        $total_size += $size; // Суммируем размер
      }
    }
  }
}
$output_value = 'Размер вложений: '.number_format($total_size,2,',',' ').' MB'; // Great!!
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 1197
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич
Контактная информация:

Re: Размер вложений

Сообщение Fait »

А вот код на PHP, который считает размер вложений в текущей сущности:

Код: Выделить всё

$files = [777]; // ID поля, куда пользователь загружает файлы
$files_arr = explode(',',$files); // Собираем в отдельный массив имена файлов (для поля Вложения, где можно загрузить сразу несколько файлов)
if ($files != '') {
  foreach ($files_arr as $key => $value) { // Перебираем массив
    $file_x = attachments::parse_filename($value); // Запрашиваем данные
    if (is_file($file_x['file_path'])) { // Если файл существует на сервере, то определяем его размер
      $size = strlen(file_get_contents($file_x['file_path'])) / 1048576; // 1048576 - столько байт в 1 МБ
      $total_size += $size; // Суммируем размер
    }
  }
}
$output_value = 'Размер вложений: '.number_format($total_size,2,',',' ').' MB'; // Great!!
Аватара пользователя
mailarn
Инвестор
Инвестор
Сообщения: 169
Зарегистрирован: 18 июн 2021, 10:33
Имя: Антон
Откуда: Екатеринбург
Контактная информация:

Re: Размер вложений

Сообщение mailarn »

Супер, спасибо )
Создание отраслевых решений на базе CRM Руководитель https://webuscrm.ru
Алексей Алейников
Сообщения: 44
Зарегистрирован: 13 июн 2018, 20:15
Имя: Алексей Алейников
Откуда: Москва
Организация: 9-33
Контактная информация:

Re: Размер вложений

Сообщение Алексей Алейников »

Не получается подсчитать количество файлов.
Кто-то может поделиться решением?

И такой вопрос - если используется PHP в Конструкторе отчётов, поля подгруженных документов будут из id поля или id столбца отчета?

Заранее благодарю за ответ.
9-33.ru
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 1197
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич
Контактная информация:

Re: Размер вложений

Сообщение Fait »

Алексей Алейников писал(а): 30 дек 2024, 03:30 Не получается подсчитать количество файлов.
Кто-то может поделиться решением?

И такой вопрос - если используется PHP в Конструкторе отчётов, поля подгруженных документов будут из id поля или id столбца отчета?

Заранее благодарю за ответ.
Вот код для подсчёта количества файлов:

Код: Выделить всё

$files = [777]; // ID поля, куда пользователь загружает файлы
$files_arr = explode(',',$files); // Собираем отдельный массив
if ($files != '') {
  foreach ($files_arr as $key => $value) { // Перебираем массив
    $file_x = attachments::parse_filename($value); // Запрашиваем данные
    $total_kol++; // Суммируем количество всех файлов
    if (is_file($file_x['file_path'])) { // Если файл существует на сервере, то определяем его размер
      $total_exists_kol++; // Суммируем количество существующих файлов
    }
  }
}
$output_value = 'Количество файлов: '.number_format($total_kol,0,',',' ').' шт., из них на сервере '.number_format($total_exists_kol,0,',',' ').' шт.'; // Great!!
А насчёт PHP кода в конструкторе - пробуйте и экспериментируйте)
Аватара пользователя
Antonyous99
Сообщения: 752
Зарегистрирован: 18 авг 2019, 09:22
Имя: Антон Владимирович
Откуда: Санкт-Петербург
Организация: ООО "РИКОМ-Сервис"
Контактная информация:

Re: Размер вложений

Сообщение Antonyous99 »

Алексей Алейников писал(а): 30 дек 2024, 03:30 И такой вопрос - если используется PHP в Конструкторе отчётов, поля подгруженных документов будут из id поля или id столбца отчета?
В Контструкторе отчетов вы самостоятельно выбираете поля для вывода.
В Конструкторе можно использовать только MySQL запросы или вместе с PHP.
ПУЛЬТ УПРАВЛЕНИЯ БИЗНЕСОМ
ERP/CRM "под ключ"
Ответить