Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Изменить расширение загружаемого файла

Форум для авторов расширений для phpBB. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

Изменить расширение загружаемого файла

Сообщение Vlad__ »

Как? Если загружается png меняем расширение на jpg, чтобы в строке загруженного файла filename.jpg

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

if (function_exists('exif_imagetype') && ($filedata['extension'] == 'png'))
что написать дальше, чтобы переименовать уже загруженный файл после этого условия?
Аватара пользователя
Sumanai
phpBB 3.0.0 RC5
Сообщения: 1668
Стаж: 9 лет 4 месяца
Благодарил (а): 267 раз
Поблагодарили: 216 раз
Контактная информация:

Re: Изменить расширение загружаемого файла

Сообщение Sumanai »

Один вопрос- зачем?
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

Re: Изменить расширение загружаемого файла

Сообщение Vlad__ »

Пишу небольшое расширение, конвертирующее автоматом загружаемый png в jpg. Все в принципе уже работает, только файл остается с расширением png.
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: Изменить расширение загружаемого файла

Сообщение LavIgor »

Тоже думаю, зачем, я бы обратно переводил в PNG, который лучше масштабируется, хоть и тоже растровый.
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

Re: Изменить расширение загружаемого файла

Сообщение Vlad__ »

Господа, неужели непонятно зачем? Когда некоторые пользователи начинают грузить фото и картинки по 1,5 -2 мб в png, когда в jpg их размер 200 кил. Накой мне такая радость?
Я не жду обсуждений зачем, а спрашиваю решение вопроса у опытных товарищей. Как я понимаю нужно изменить для этого файла extension в phpbb_attachments. Напомните как?

$db->sql_query( ..... ? как именно для этого файла?
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: Изменить расширение загружаемого файла

Сообщение Sheer »

Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

Re: Изменить расширение загружаемого файла

Сообщение Vlad__ »

Sheer, rename не то. Файл загружается с physical_filename вида 61_09deb2b77a79d3f9b37d89ed38cf9c0b. Его я конвертирую в jpg, это не проблема. Но к нему в бд прописано как я понимаю real_filename и extension. Имхо мне там нужно поменять, чтобы было кошерно.
Последний раз редактировалось Vlad__ 09.09.2017 13:43, всего редактировалось 1 раз.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: Изменить расширение загружаемого файла

Сообщение Sheer »

Ну и меняй. Ссылку на руководство по MySQL прислать?
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

Re: Изменить расширение загружаемого файла

Сообщение Vlad__ »

Sheer писал(а): 09.09.2017 13:43Ну и меняй. Ссылку на руководство по MySQL прислать?
Читаю, но немного торможу, т.к. опыта во всем этом крайне мало.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: Изменить расширение загружаемого файла

Сообщение Sheer »

Как-то так

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

UPDATE phpbb_attachments SET real_filename = 'under_construction.jpg', extension = 'jpg', mimetype = 'image/jpg' WHERE attach_id = 1;
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

Re: Изменить расширение загружаемого файла

Сообщение Vlad__ »

Не получается, чуствую что просто, но ....

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

if (function_exists('exif_imagetype') && ($filedata['extension'] == 'png'))
{
$sql = 'UPDATE ' . phpbb_attachments . 'SET real_filename =' . $filedata['physical_filename'] . '.jpg' . 'SET extension = 'jpg'' .  'WHERE attach_id = ' . $filedata['attach_id'];
$this->db->sql_query($sql);
}
Этот код не работает. Или ATTACHMENTS_TABLE вместо phpbb_attachments?
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: Изменить расширение загружаемого файла

Сообщение Sheer »

Vlad__ писал(а): 09.09.2017 14:37ATTACHMENTS_TABLE вместо phpbb_attachments
Семён Семёныч!
Ну для начала стоит еще проверить, а что там с массивом $filedata

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

print"<pre>";print_r($filedata);print"</pre>";
Второе. А выполняется ли условие if (function_exists('exif_imagetype') && ($filedata['extension'] == 'png'))
И третье, нужно кавычки экранировать.
Вообще это лучше так делать

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

$sql_data = array(
	'real_filename'	=> $filedata['physical_filename'],
	'extension '	=> $filedata['extension'],
);

$sql = 'UPDATE ' . ATTACHMENTS_TABLE . '
		SET ' . $this->db->sql_build_array('UPDATE', $sql_data) . '
		WHERE attach_id = ' . $filedata['attach_id'];
И четвертое. mimetype тоже наужно менять.

Отправлено спустя 54 секунды:
И при разработке всегда включать debug
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

Re: Изменить расширение загружаемого файла

Сообщение Vlad__ »

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

PHP Fatal error:  Uncaught Error: Call to a member function sql_build_array() on null in /var/www/mysite$
Stack trace:
#0 [internal function]: vlad\image_convert\event\listener->upload_image_convert(Object(phpbb\event\data), 'core.modify_upl...', Object(phpbb$
#1 /var/www/mysite/vendor/symfony/event-dispatcher/EventDispatcher.php(184): call_user_func(Array, Object(phpbb\event\data), 'core.modify$
#2 /var/www/mysite/vendor/symfony/event-dispatcher/EventDispatcher.php(46): Symfony\Component\EventDispatcher\EventDispatcher->doDispatch$
#3 /var/www/mysite/phpbb/event/dispatcher.php(60): Symfony\Component\EventDispatcher\EventDispatcher->dispatch('core.modify_upl...', Obje$
#4 /var/www/mysite/phpbb/event/dispatcher.php(46): phpbb\event\dispatcher->dispatch('core.modify_upl...', Object(phpbb\event\data))
#5 /var/www/mysite/phpbb/attachment/up in /var/www/mysite/ext/vlad/image_convert/event/listener.php on line 65
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: Изменить расширение загружаемого файла

Сообщение Sheer »

В конструкторе (__construct) среди аргументов функции должна быть строка \phpbb\db\driver\driver_interface $db, и соответственно в services.yml - '@dbal.conn'
Создание страниц в стиле конференции

Отправлено спустя 1 минуту 36 секунд:
Sheer писал(а): 06.11.2014 22:27Обратите внимание: аргументы класса Sheer\mytest\controller\mytest размещаются строго в том же порядке, в каком они перечислены в списке аргументов функции __construct.
Отправлено спустя 2 минуты 12 секунд:
Да, и не забываем, что в теле функции __construct должна быть при этом стока

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

$this->db					= $db;
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

Re: Изменить расширение загружаемого файла

Сообщение Vlad__ »

Sheer писал(а): 09.09.2017 15:13

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

$sql = 'UPDATE ' . ATTACHMENTS_TABLE . '
		SET ' . $this->db->sql_build_array('UPDATE', $sql_data) . '
		WHERE attach_id = ' . $filedata['attach_id'];
А тут UPDATE два раза - так нужно?
Sheer писал(а): 09.09.2017 16:09В конструкторе (__construct)
Спасибо! Внес изменения, теперь не ругается, но теперь ничего не происходит. Уже всю голову поломал )))

Привожу всю функцию:

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

public function upload_image_convert($event)
        {
                $is_image = $event['is_image'];
                $filedata = $event['filedata'];
                $destination_file = $this->phpbb_root_path . $this->config['upload_path'] . '/' . $filedata['physical_filename'];
                if ($is_image)
                {
                        if (function_exists('exif_imagetype') && ($filedata['extension'] == 'png'))
                        {

// вот тут нужен код замены имени файла, расширения, миметипа этого вложения в дб
// затем будет идти код конвертации png в jpg (он у меня есть и работает), вопрос только в расширении файла
                        }
          }
}
Sheer писал(а): 09.09.2017 15:13А выполняется ли условие if (function_exists('exif_imagetype') && ($filedata['extension'] == 'png'))
Выполняется.

Отправлено спустя 23 минуты 2 секунды:
Конечно лучше менять расширение файла до загрузки или во время ее, а формат файла определять только по exif_imagetype (думаю это не критично), но моих знаний не хватает это реализовать (((
Ответить

Вернуться в «Для разработчиков»