Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Получение размера файла

00 голосов
8
У меня есть каталог файлов pdf.
Я создал инфоблок для них добавил свойство файл. Вывел все файлы через компонент news.list
необходимо выводить рамер файла. как это можно реализовать методами битрикса?
Также ссылка на скачивание файла у меня выводится в виде слова загрузить.
Как можно поменять это слово?
Заранее благодарю.
спросил 06 Июль, 13 от Fierce88 (440 баллов)

8 Ответы

00 голосов
Возьмите ID файла из $arItem['PRORERTIES'][код_свойства]['VALUE'] и используйте CFile::GetByID
ответил 06 Июль, 13 от Ly (4,580 баллов)
00 голосов
А как вывести размер файла ?
ответил 19 Авг, 13 от Fierce88 (440 баллов)
00 голосов
echo
ответил 17 Ноя, 13 от Grimmi (2,560 баллов)
00 голосов
Цитата
Николай Санников пишет:
echo

а что после?
ответил 26 Фев, 14 от Helic (100 баллов)
00 голосов
Иван Коневега, не нашли как размер файла вывести? Вроде в свойствах размер не сохраняется.
ответил 17 Июнь, 14 от kArToFkA (100 баллов)
00 голосов
Цитата
Константин Михальчук пишет:
Вроде в свойствах размер не сохраняется.

В БД сохраняется в таблице с файлами их размер (FILE_SIZE).
ответил 16 Окт, 14 от bot6 (200 баллов)
00 голосов
Код
function GetStrFileSize($size, $round=2)
{
   $sizes = array('B', 'Kb', 'Mb', 'Gb', 'Tb', 'Pb', 'Eb', 'Zb', 'Yb');
   for ($i=0; $size > 1024 && $i < count($sizes) - 1; $i++) $size /= 1024;
   return round($size,$round)." ".$sizes[$i];
}
$arFile=CFile::GetById($ID_FILE);
echo GetStrFileSize($arFile["FILE_SIZE"]);
ответил 16 Фев, 15 от NitroGeN (2,840 баллов)
00 голосов
Цитата
Евгений Малков пишет:
Код
function GetStrFileSize($size, $round=2)
{
   $sizes = array('B', 'Kb', 'Mb', 'Gb', 'Tb', 'Pb', 'Eb', 'Zb', 'Yb');
   for ($i=0; $size > 1024 &amp;&amp; $i < count($sizes) - 1; $i++) $size /= 1024;
   return round($size,$round)." ".$sizes[$i];
}
$arFile=CFile::GetById($ID_FILE);
echo GetStrFileSize($arFile["FILE_SIZE"]);

Евгений, большое спасибо.

У меня была похожая проблема, на форуме нашёл всего две темы.
В свойствах элемента инфоблока $arProperty["DISPLAY_VALUE"] передаётся ссылка на скачиваемый файл, вырезаем из него URL и через CFile::MakeFileArray узнаём размер:

Код
 Размер файла: <?
$Temp=substr($arProperty["DISPLAY_VALUE"], 9,strlen($arProperty["DISPLAY_VALUE"])-33);
$arFile=CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"].$Temp);
$size=$arFile["size"];
$sizes = array('B', 'Kb', 'Mb', 'Gb', 'Tb', 'Pb', 'Eb', 'Zb', 'Yb'); 
for ($i=0; $size > 1024 && $i < count($sizes) - 1; $i++) $size /= 1024; 
echo round($size,$round)." ".$sizes[$i];
?> 

Код вставляется в шаблон компонента.

Сделано не очень грамотно, т.к. берет любое свойство элемента инфоблока, не только файл. Нужна проверка. Да и код можно было бы подсократить.
ответил 27 Май, 15 от Mirrodin (100 баллов)

Похожие вопросы

0 голосов
2 ответов
0 голосов
6 ответов
0 голосов
4 ответов
спросил 10 Июль, 13 от SuperMag (120 баллов)
0 голосов
8 ответов
спросил 05 Июль, 13 от TY (160 баллов)
0 голосов
10 ответов
спросил 24 Фев, 13 от Willow (300 баллов)