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

Сохранение картинки вместе с расширением

00 голосов
7
Работаю в init.php событие OnBeforeIBlockElementUpdate

Пользователь добавил к элементу картинку.
$img — это переменная с путем картинки.
abc — папка временная.
Код
Сохраняю ее: $v = CFile::SaveFile(CFile::MakeFileArray($img), "abc");

Затем я делаю с этой картинкой
Код
$v = CFile::ResizeImageGet($v, Array(), BX_RESIZE_IMAGE_PROPORTIONAL, false, $arFilter_WM);

И потом записываю измененную картинку в свойство
Код
$arFields['PROPERTY_VALUES'][$key][$key2] = CFile::MakeFileArray($v["src"]);


Все отлично работает, только картинка сохраняется без расширения. И потом если я при просмотре в браузере пытаюсь ее сохранять, то браузер воспринимает ее как текст.
Например, так: /upload/resize_cache/abc/8c3/0_0_1fccf55ea0c717934aca8a034952d3f72/8c34b642f2672bcf4cd27bf6c1184b74

Как мне сделать так, чтобы расширение сохранялось тоже?
спросил 01 Июнь, 13 от maxdj (480 баллов)

7 Ответы

00 голосов
Кто-нибудь?
ответил 01 Июнь, 13 от maxdj (480 баллов)
00 голосов
Цитата
scifi пишет:
$img — это переменная с путем картинки
Как вы её получаете?
ответил 07 Июнь, 13 от Ly (4,580 баллов)
00 голосов
У меня это дополнительное свойство множественное типа файл.
Получаю вот так:
Код
      foreach($arFields['PROPERTY_VALUES'] as $key => $value)
         foreach($value as $key2 => $value2)
            if($value2["tmp_name"]){


Вот $value2["tmp_name"] и есть $img
В ней находится путь к временному файлу. Он как раз без расширения.
ответил 08 Сен, 13 от maxdj (480 баллов)
00 голосов
А в $value2["name"] есть оригинальное имя файла? Которое с расширением.
ответил 06 Дек, 13 от Ly (4,580 баллов)
00 голосов
А, стоп, что-то я вообще не о том.

Зачем вам ResizeImageGet в обработчике? Используйте его при показе.
ответил 20 Март, 14 от Ly (4,580 баллов)
00 голосов
Есть оригинальное имя, но как сохранить с этим расширением? Ведь в tmp_name его уже нет.
Код
(
    [name] => crystal_big.png
    [type] => image/png
    [tmp_name] => /tmp/phpvSuYg0
    [error] => 0
    [size] => 61599
)

Выводится достаточно много картинок. Я боюсь, что страница будет создавать слишком большую нагрузку.
ответил 12 Июль, 14 от maxdj (480 баллов)
00 голосов
Если вынести создание миниатюр в шаблон, большая нагрузка будет только в самый первый раз. Ваши миниатюрки будут складываться в /upload/resize_cache/iblock/, и при повторном вызове ResizeImageGet с теми же параметрами повторной генерации происходить не будет.
ответил 12 Ноя, 14 от Ly (4,580 баллов)

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

0 голосов
2 ответов
0 голосов
4 ответов
спросил 21 Янв, 14 от eff (160 баллов)
0 голосов
5 ответов
0 голосов
4 ответов
спросил 06 Янв, 14 от XIDAN (620 баллов)