Уважаемые пользователи!
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 3.0.x. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Boris
phpBB 1.0.0
Сообщения: 3
Стаж: 13 лет 11 месяцев
Контактная информация:

Загрузка файлов в своём модуле

Сообщение Boris »

Решил написать свой модуль:

каталог файлов с делением по категориям и доступом в зависимости от прав. В результате столкнулся с проблемой: НЕ МОГУ ЗАГРУЗИТЬ ФАЙЛ НА СЕРВЕР!

в темплайт добавил код:

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

<form action="catalog.php" method="post" enctype="multipart/form-data">
	<input type=hidden name=mode value="download_ert">
	<input type="file" id="fileert" name="fileert"><br>
	<input type="submit" value="Загрузить"><br>
</form>
в файле catalog.php соответственно:

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


define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);

include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup(array('catalogs', 'groups'));

// Grab data
$mode		= request_var('mode', '');

switch ($mode)
{
	case 'download_ert':
		include_once($phpbb_root_path . 'includes/functions_upload.' . $phpEx);
		$upload = new fileupload('FERT_', array('ert'), 1024*1*1024, 0, 0, 0, 0, explode('|', $config['mime_triggers']));
	
		if (!empty($_FILES['fileert']['name']))
		{
			$fileert = $upload->form_upload('fileert');
		}
		else
		{
			trigger_error('NO_ERT_FILE');
		}
......
И всё это не работает СОВСЕМ :cry:
$_FILES['fileert']['name'] - при входе в модуль пустое значение, после подключения common.php вообще перестаёт быть массивом

подскажите как что работает c файлами на phpBB3, умаялся уже совсем
Аватара пользователя
Rayden
Former team member
Сообщения: 3739
Стаж: 18 лет 9 месяцев
Поблагодарили: 44 раза
Контактная информация:

Re: Загрузка файлов в своём модуле

Сообщение Rayden »

а раздел "для авторов" совсем не заметен?

Добавлено спустя 51 секунду:
переношу
phpBB2 FAQ
phpBB3 FAQ
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

Re: Загрузка файлов в своём модуле

Сообщение rxu »

Посмотрите функцию upload_attachment из includes/functions_posting.php.
Изображение
Boris
phpBB 1.0.0
Сообщения: 3
Стаж: 13 лет 11 месяцев
Контактная информация:

Re: Загрузка файлов в своём модуле

Сообщение Boris »

вставил в код эту функцию.. Переименовал только, а в ответ:

Закачка файла инициирована, но доступный для закачки файл не найден.

подозреваю, что при вызове этой функции $form_name имеет ключевое значение. Я поставил по имени поля файл, а именно

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

......
	$fileert = upload_ert('fileert', $catalog_id);
.....
function upload_ert($form_name, $forum_id, $local = false, $local_storage = '', $is_message = false, $local_filedata = false)
......
по каким правилам задаётся этот параметр?
Boris
phpBB 1.0.0
Сообщения: 3
Стаж: 13 лет 11 месяцев
Контактная информация:

Re: Загрузка файлов в своём модуле

Сообщение Boris »

вот я "чайник"

я считал что у меня код (я же его добавил):

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

<form action="catalog.php" method="post" enctype="multipart/form-data">
   <input type=hidden name=mode value="download_ert">
   <input type="file" id="fileert" name="fileert"><br>
   <input type="submit" value="Загрузить"><br>
</form>
и не заметил, что настоящий код такой:

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

<form method="post" action="">
...
<form action="catalog.php" method="post" enctype="multipart/form-data">
   <input type=hidden name=mode value="download_ert">
   <input type="file" id="fileert" name="fileert"><br>
   <input type="submit" value="Загрузить"><br>
</form>
....
</form>
ну и в результате такой конструкции параметр $_FILES тупо не передавался
вложенность форм исправил, параметр на входе получил... даже получил сообщение, что что-то куда-то стало грузиться...
так что квест пройден, пошел на следующий уровень.
Всем Спасибо!
lesha20
phpBB 1.4.0
Сообщения: 31
Стаж: 11 лет 6 месяцев
Благодарил (а): 7 раз
Поблагодарили: 2 раза

Re: Загрузка файлов в своём модуле

Сообщение lesha20 »

Подскажите пожалуйста, какую функцию в phpBB3 использовать, чтобы программно прикрепить вложения к сообщению не из формы, а путем указания пути к файлу?

Т.е. задача такая, надо из базы uCoz вытащить сообщение, проверить в нем, есть ли вложения. Если есть, то по указанному пути к файлу загрузить этот файл в phpBB3 (папка files) с помощью какой-то функции phpBB3. В таблице ATTACHMENTS_TABLE должна прописаться информация об этом файле. В таблицу POSTS_TABLE загрузить само сообщение и у этого сообщения поле post_attachment должно = 1.

Функция upload_attachment привязана к форме, точнее к массиву _FILES. Придётся заполнять этот массив самому информацией о файле?
Или можно прикрепить файл к сообщению с помощью функции submit_post? :?
lesha20
phpBB 1.4.0
Сообщения: 31
Стаж: 11 лет 6 месяцев
Благодарил (а): 7 раз
Поблагодарили: 2 раза

Re: Загрузка файлов в своём модуле

Сообщение lesha20 »

Немного покапался в функции upload_attachment(), думаю, что подойдёт, если 3-й параметр установить true.
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 11 лет 7 месяцев
Откуда: Израиль
Благодарил (а): 85 раз
Поблагодарили: 305 раз
Контактная информация:

Re: Загрузка файлов в своём модуле

Сообщение Алг »

Boris писал(а):Решил написать свой модуль:

каталог файлов с делением по категориям и доступом в зависимости от прав. В результате столкнулся с проблемой: НЕ МОГУ ЗАГРУЗИТЬ ФАЙЛ НА СЕРВЕР!
Boris писал(а):вот я "чайник"
Код у меня такой же точно, как у предыдущего оратора, вложенности форм нет, а проблема таки есть - $_FILES не возвращает значений
Может кто свежим взглядом найдёт, чего не хватает

html

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

<form action="upl.php" enctype="multipart/form-data" method="post">
                    <input type="file"  name=''uploadfile"  />
                    <input type="submit" name="submit" value="Submit">
                    </form>
php

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

if (!empty($_FILES['uploadfile']['name']))
	{
 
	}
	else
	{
     print_r($_FILES);

	}
Уходит в "else" и распечатывает пустой массив
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: Загрузка файлов в своём модуле

Сообщение Татьяна5 »

Алг писал(а):name=' 'uploadfile"
Две одинарных кавычки вместо двойной
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: Загрузка файлов в своём модуле

Сообщение Sheer »

Чтоб совсем правильно было

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

<form action="{S_ACTION}" enctype="multipart/form-data" method="post">
                    <input type="file" name="uploadfile"/>
                    <input type="submit" name="submit" value="{L_SUBMIT}">
</form>
В $template->assign_vars

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

'S_ACTION' => append_sid("{$phpbb_root_path}upl.$phpEx"),
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 11 лет 7 месяцев
Откуда: Израиль
Благодарил (а): 85 раз
Поблагодарили: 305 раз
Контактная информация:

Re: Загрузка файлов в своём модуле

Сообщение Алг »

Sheer писал(а):Чтоб совсем правильно было
так у меня совсем правильно и есть :)

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

<form action="{U_ACTION_UPLOAD}" enctype="multipart/form-data" method="post">
Татьяна5, большое спасибо, в проекте эти одинарные кавычки были совершенно неотличимы от двойной, исправила, теперь получаю значение
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов
Закрыто

Вернуться в «Для авторов (phpBB 3.0.x)»