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

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

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

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

Сообщение Boris » 01.04.2010 19:42

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

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

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

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

<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
Зарегистрирован: 27.06.2005 1:07
Поблагодарили: 44 раза

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

Сообщение Rayden » 01.04.2010 19:45

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

Добавлено спустя 51 секунду:
переношу
phpBB2 FAQ
phpBB3 FAQ

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14535
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 348 раз
Поблагодарили: 1556 раз

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

Сообщение rxu » 01.04.2010 19:54

Посмотрите функцию upload_attachment из includes/functions_posting.php.
Изображение

Boris
phpBB 1.0.0
Сообщения: 3
Зарегистрирован: 01.04.2010 18:23

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

Сообщение Boris » 01.04.2010 21:12

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

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

подозреваю, что при вызове этой функции $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
Зарегистрирован: 01.04.2010 18:23

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

Сообщение Boris » 02.04.2010 4:37

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

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

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

<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
Зарегистрирован: 09.09.2012 0:42
Благодарил (а): 7 раз
Поблагодарили: 2 раза

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

Сообщение lesha20 » 07.10.2012 18:42

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

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

Функция upload_attachment привязана к форме, точнее к массиву _FILES. Придётся заполнять этот массив самому информацией о файле?
Или можно прикрепить файл к сообщению с помощью функции submit_post? :?

lesha20
phpBB 1.4.0
Сообщения: 31
Зарегистрирован: 09.09.2012 0:42
Благодарил (а): 7 раз
Поблагодарили: 2 раза

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

Сообщение lesha20 » 08.10.2012 11:56

Немного покапался в функции upload_attachment(), думаю, что подойдёт, если 3-й параметр установить true.

Аватара пользователя
Алг
Former team member
Сообщения: 878
Зарегистрирован: 31.07.2012 23:11
Откуда: Израиль
Благодарил (а): 84 раза
Поблагодарили: 279 раз

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

Сообщение Алг » 20.09.2013 21:00

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
Поддержка
Поддержка
Сообщения: 9766
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 175 раз
Поблагодарили: 2721 раз

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

Сообщение Татьяна5 » 20.09.2013 21:30

Алг писал(а):name=' 'uploadfile"
Две одинарных кавычки вместо двойной

Аватара пользователя
Sheer
phpBB Guru
phpBB Guru
Сообщения: 11496
Зарегистрирован: 18.02.2007 19:01
Откуда: Калининград не Кенигсберг
Благодарил (а): 53 раза
Поблагодарили: 2579 раз

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

Сообщение Sheer » 20.09.2013 21:42

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

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

<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
Сообщения: 878
Зарегистрирован: 31.07.2012 23:11
Откуда: Израиль
Благодарил (а): 84 раза
Поблагодарили: 279 раз

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

Сообщение Алг » 20.09.2013 22:00

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

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

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

Т. Шаов

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