Система управления контентом SantaFox

Santafox CMS

  • Начало
  • Помощь
  • Поиск
  • Календарь
  • Вход
  • Регистрация

  • Система управления контентом SantaFox »
  • Разработчикам »
  • Другое »
  • Загрузка файла в админке модуля
  • Показать непрочитанные сообщения
« предыдущая тема следующая тема »
  • Печать
Страницы: [1]

Автор Тема: Загрузка файла в админке модуля  (Прочитано 2546 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ermy

  • The sign above my avatar
  • Опытный лис
  • ****
  • Сообщений: 321
  • Авторитет: 12
  • Пол: Мужской
  • The sign below my avatar
    • Просмотр профиля
Загрузка файла в админке модуля
« : 12 Ноябрь 2014, 16:01:36 »
Пытаюсь разобраться с написанием модуля. Для начала просто хочу после загрузки файла вывести его имя
в start_admin()
Код: [Выделить]
//Формирую контент
$html = '<form type="post" action=""><input type="file" name="pdf"><input type="submit"></form>';
//Если файл загружен, то вывожу его имя
if ($_FILES['pdf']['name']) {
$content .= $_FILES['pdf']['name'];
};
Пишет
Код: [Выделить]
Notice: Undefined index: pdf in Z:\home\santa.ru\www\modules\automailing\automailing.class.php on line 118

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\santa.ru\www\modules\automailing\automailing.class.php:118) in Z:\home\santa.ru\www\include\kernel.class.php on line 1445
Вопрос - как правильно загрузить файл ?
Спасибо.
Записан

Оффлайн Rinat

  • Старый лис
  • *****
  • Сообщений: 601
  • Авторитет: 36
    • Просмотр профиля
Re: Загрузка файла в админке модуля
« Ответ #1 : 12 Ноябрь 2014, 16:46:25 »
Код: [Выделить]
//Формирую контент
$html = '<form type="post" action=""><input type="file" name="pdf"><input type="submit"></form>';
//Если файл загружен, то вывожу его имя
if (isset($_FILES['pdf']['name'])) {
$content .= $_FILES['pdf']['name'];
};
Записан

Оффлайн ermy

  • The sign above my avatar
  • Опытный лис
  • ****
  • Сообщений: 321
  • Авторитет: 12
  • Пол: Мужской
  • The sign below my avatar
    • Просмотр профиля
Re: Загрузка файла в админке модуля
« Ответ #2 : 12 Ноябрь 2014, 16:55:31 »
Спасибо, исправил.
Выбираю файл и загружаю его. Условие if почему-то не срабатывает.
Записан

Оффлайн DET

  • Местный лис
  • ***
  • Сообщений: 159
  • Авторитет: 2
  • Пол: Мужской
  • DET
    • Просмотр профиля
Re: Загрузка файла в админке модуля
« Ответ #3 : 12 Ноябрь 2014, 16:57:57 »
А что за модуль такой automailing ????
Записан

Оффлайн ermy

  • The sign above my avatar
  • Опытный лис
  • ****
  • Сообщений: 321
  • Авторитет: 12
  • Пол: Мужской
  • The sign below my avatar
    • Просмотр профиля
Re: Загрузка файла в админке модуля
« Ответ #4 : 12 Ноябрь 2014, 17:03:34 »
Это мой первый модуль, который пытаюсь разработать.
Записан

Оффлайн Rinat

  • Старый лис
  • *****
  • Сообщений: 601
  • Авторитет: 36
    • Просмотр профиля
Re: Загрузка файла в админке модуля
« Ответ #5 : 12 Ноябрь 2014, 17:15:16 »
напишите там var_dump($_FILES);
Посмотрите, что выдаст.
Записан

Оффлайн ermy

  • The sign above my avatar
  • Опытный лис
  • ****
  • Сообщений: 321
  • Авторитет: 12
  • Пол: Мужской
  • The sign below my avatar
    • Просмотр профиля
Re: Загрузка файла в админке модуля
« Ответ #6 : 13 Ноябрь 2014, 10:03:56 »
Вот что пишет (вне зависимости был ли файл загружен или нет):
array(0) { }

PS На всякий случай прикладываю мой модуль.
PSS Работаю локально на денвере.
Записан

Оффлайн Rinat

  • Старый лис
  • *****
  • Сообщений: 601
  • Авторитет: 36
    • Просмотр профиля
Re: Загрузка файла в админке модуля
« Ответ #7 : 13 Ноябрь 2014, 12:15:49 »
Так попробуйте:
Код: [Выделить]

html = '<form type="post"  enctype="multipart/form-data  action=""><input type="file" name="pdf"><input type="submit"></form>';
Записан

Оффлайн ermy

  • The sign above my avatar
  • Опытный лис
  • ****
  • Сообщений: 321
  • Авторитет: 12
  • Пол: Мужской
  • The sign below my avatar
    • Просмотр профиля
Re: Загрузка файла в админке модуля
« Ответ #8 : 14 Ноябрь 2014, 13:33:29 »
Таже самая петрушка.
Код: [Выделить]
array(0) { }
Записан

Оффлайн Rinat

  • Старый лис
  • *****
  • Сообщений: 601
  • Авторитет: 36
    • Просмотр профиля
Re: Загрузка файла в админке модуля
« Ответ #9 : 14 Ноябрь 2014, 15:13:01 »
Да, вижу. Там редирект происходит после получения данных автоматом.
Даные получаются, но затем происходит редирект.
Записан

Оффлайн ermy

  • The sign above my avatar
  • Опытный лис
  • ****
  • Сообщений: 321
  • Авторитет: 12
  • Пол: Мужской
  • The sign below my avatar
    • Просмотр профиля
Re: Загрузка файла в админке модуля
« Ответ #10 : 20 Ноябрь 2014, 16:25:06 »
Все, разобрался)
Короче обязательно нужно в action формы подставлять урл ветки обработчика.
В общем сначала:

Основная ветка, где выбираем файл для загрузки
Код: [Выделить]
           
case 'main':
$html='';
$html .= str_replace('%form_action%', $kernel->pub_redirect_for_form('save_data'), $arr['begin']);//заменяем action на ветку-обработчик
return $html;
break;

Шаблон формы
Код: [Выделить]
<!--@begin -->
<form action="[b]%form_action%[/b]" method="post" enctype="multipart/form-data">
...
</form>

А вот сама ветка обработчик
Код: [Выделить]
case 'save_data':
move_uploaded_file ($_FILES['file']['tmp_name'], $uploads_dir.$_FILES['file']['name']);//перемещаем файл
$kernel->pub_redirect_refresh_reload('main');//перекидываем на основную ветку
break;

Все заливает на ура!

Это, конечно упрощенный вариант. Нужно еще писать данные в БД, проверять ранее загруженный файл и удалять его.  А в основной ветке выводить инфу о предыдущих загрузках... и т.д.

PS Нашел функцию ядра pub_file_move, которая не описана в документации, но и не работает...
Записан

  • Печать
Страницы: [1]
« предыдущая тема следующая тема »
  • Система управления контентом SantaFox »
  • Разработчикам »
  • Другое »
  • Загрузка файла в админке модуля
  • Показать непрочитанные сообщения
 

SMF 2.0.11 | SMF © 2011, Simple Machines
Flatline Theme Made By: NBK*Twitch
Go To Top