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