Уважаемые пользователи!
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 | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

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

Сообщение Sheer »

Vlad__ писал(а): 09.09.2017 16:39UPDATE два раза
Первый раз - это в самом SQL-запросе, второй раз - это аргумент функции sql_build_array, можно передавать значения INSERT или UPDATE
Итак, после

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

$sql = 'UPDATE ' . ATTACHMENTS_TABLE . '
		SET ' . $this->db->sql_build_array('UPDATE', $sql_data) . '
		WHERE attach_id = ' . $filedata['attach_id'];
сам запрос-то выполняется? $this->db->sql_query($sql); присутствует?
Вставь перед этим

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

print "$sql<br/>";
Смотри какой запрос сгенерирован, скопируй его и попробуй выполнить в pMA

Отправлено спустя 1 минуту 4 секунды:
Vlad__ писал(а): 09.09.2017 17:02менять расширение файла до загрузки или во время ее
Ни до, ни во время, физически невозможно.
Изображение
Общие ошибки новичков (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 или окошко HTTP error ... (((
Может что-то упустил-пропустил?

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

<?php

namespace vlad\image_convert\event;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;

/**
* Event listener
*/
class listener implements EventSubscriberInterface
{
/**
* Assign functions defined in this class to event listeners in the core
*
* @return array
* @static
* @access public
*/
        static public function getSubscribedEvents()
        {
                return array(
                        'core.modify_uploaded_file'                     => array ('upload_image_convert', 1),
                );
        }

        /** @var \phpbb\config\config */
        protected $config;

        //** @var string phpbb_root_path */
        protected $phpbb_root_path;

        /** @var \phpbb\db\driver\driver_interface */
        protected $db;

        /**
        * Constructor
        */
        public function __construct(
                $phpbb_root_path,
                \phpbb\config\config $config,
                \phpbb\db\driver\driver_interface $db
                )
        {
                $this->db = $db;
                $this->phpbb_root_path = $phpbb_root_path;
                $this->config = $config;
        }

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'))
                        {
                        $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'];
                         $this->db->sql_query($sql);
                        }
                }
        }
}
Отправлено спустя 17 минут 40 секунд:
Sheer писал(а): 09.09.2017 17:03Ни до, ни во время, физически невозможно.
Я имею ввиду в момент когда файл загружается в папку files в виде набора символов, а в бд первый раз прописываются имя файла и расширение, тут и поменять png на jpg. Или для этого нет события ядра, чтобы прикрутить функцию?
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

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

Сообщение Sheer »

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

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

Сообщение Vlad__ »

Не нужно ничего менять в бд. Можно сделать изменение имени и расширения ДО загрузки файла в бд. Спасибо, но все о чем я целый день спрашивал - в топку! Решение простое и совсем другое. Тему можно закрывать. Еще раз спасибо!
Ответить

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