Страница 1 из 1

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

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

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

Добавлено: 30 сен 2024, 20:59
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!!

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

Добавлено: 30 сен 2024, 21:01
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!!

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

Добавлено: 30 сен 2024, 21:07
mailarn
Супер, спасибо )

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

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

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

Заранее благодарю за ответ.

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

Добавлено: 30 дек 2024, 15:28
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 кода в конструкторе - пробуйте и экспериментируйте)

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

Добавлено: 31 дек 2024, 23:00
Antonyous99
Алексей Алейников писал(а): 30 дек 2024, 03:30 И такой вопрос - если используется PHP в Конструкторе отчётов, поля подгруженных документов будут из id поля или id столбца отчета?
В Контструкторе отчетов вы самостоятельно выбираете поля для вывода.
В Конструкторе можно использовать только MySQL запросы или вместе с PHP.