Есть вопрос?
Зайди на форум

Поиск на сайте: Advanced

Denix - новый дистрибутив Linux. Русификация Ubuntu и установка кодеков

dkws.org.ua
Форум сайта dkws.org.ua
 
Главная    ТемыТемы    АльбомАльбом    РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Вопрос о передаче файлов (пример из кн. "Современный са

 
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> PHP
 
Автор Сообщение
agendus




Зарегистрирован: 11.10.2009
Сообщения: 4

СообщениеДобавлено: Вс Окт 11, 2009 3:32 pm    Заголовок сообщения: Вопрос о передаче файлов (пример из кн. "Современный са
Ответить с цитатой

Доброго времени суток, Денис.
Вопрос от начинающего изучать PHP по Вашей книге.
Пробую выполнить пример по передаче файлов. Запускаю следующий сценарий:
Код:
<FORM ENCTYPE="multipart/form-data" ACTION="uploader.php" METHOD=POST>
Выберите файл: <INPUT NAME="myfile" TYPE="file">
<INPUT TYPE="submit" VALUE="Загрузить">
</FORM>

При нажатии кнопки загрузки, после выбора файла, в браузере отображается весь код сценария uploader.php.
С помощью phpinfo() проверил, что передача файлов включена.
Тем не менее, в каталог uploads ничего не передается. У меня что-то не так со средой? Подскажите пожалуйста Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Амир

Участник тусовки


Зарегистрирован: 21.07.2009
Сообщения: 135

СообщениеДобавлено: Вс Окт 11, 2009 5:30 pm    Заголовок сообщения:
Ответить с цитатой

А можно взглянуть на код обработчика uploader.php?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
agendus




Зарегистрирован: 11.10.2009
Сообщения: 4

СообщениеДобавлено: Пн Окт 12, 2009 7:13 am    Заголовок сообщения:
Ответить с цитатой

Я сейчас на работе, кода нет под рукой. Могу только по памяти:
Код:
// проверка установки переменных
  if isset(...)
  {
     // присвоение выбранному файлу имени
     move_uploaded_file(...)
  }

Настоящий код обработчика покажу вечером, из дома.
Но в целом он такой - весь код в блоке if isset. Проверяются наверное переменные из php.ini, типа разрещена ли передача файлов. Ну и вызывается ф-ция закачки на сервер. И вот весь этот код, даже с комментариями, я вижу в браузере после нажатия кнопки "загрузить"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Амир

Участник тусовки


Зарегистрирован: 21.07.2009
Сообщения: 135

СообщениеДобавлено: Пн Окт 12, 2009 11:23 am    Заголовок сообщения:
Ответить с цитатой

если выводит сам код, а не результат его работы, то, (при условии что твой локалхост настроен) интерпретатор php не может понять откуда начинается код и что обрабатывать.
Поставь <?php в самом начале, это должен быть самый первый символ и ?> в самом конце, последний символ.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
agendus




Зарегистрирован: 11.10.2009
Сообщения: 4

СообщениеДобавлено: Пн Окт 12, 2009 6:46 pm    Заголовок сообщения:
Ответить с цитатой

Да, правда, я забыл обрамление кода в <? ?>. Теперь код выполняется... вот только происходит зависание браузера и файл не загружается. Код следующий:
Код:
if(isset($_FILES["myfile"]))
{
    $myfile      = $_FILES["myfile"]["tmp_name"];
    $myfile_name = $_FILES["myfile"]["name"];
    $myfile_size = $_FILES["myfile"]["size"];
    $error        = $_FILES["myfile"]["error"];

    switch($error)
    {
     case 1: die('Размер файла превышает upload_max_filesize в php.ini'); break;
     case 2: die('Размер файла превышает параметр MAX_FILE_SIZE в форме'); break;
     case 3: die('Файл загружен не полностью!'); break;
     case 4: die('Файл не загружен'); break;
   }

   // Нам нужно сформировать имя файла на сервере. Имя файла на компьютере
   // клиента использовать нежелательно, поскольку оно может содержать символы
   // национальных алфавитов и пробелы, поэтому мы будем использовать имя
   // которое PHP присвоил файлу по умолчанию, но будем загружать файл в каталог
   // upload. Права доступа к этому каталогу нужно установить 777
   $fname = "upload/" . basename($myfile);
   move_uploaded_file($myfile, $fname);
}
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
agendus




Зарегистрирован: 11.10.2009
Сообщения: 4

СообщениеДобавлено: Пн Окт 12, 2009 6:52 pm    Заголовок сообщения:
Ответить с цитатой

Запустил сценарий еще раз. Все ОК, файл загружается, только вот вместо выбранного мной файла в целевой директории оказывается странный файл. PHP генерит наверное имя и расширение - у меня он выдал php3A.tmp
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Ср Окт 14, 2009 3:08 am    Заголовок сообщения:
Ответить с цитатой

Так и нужно - это случайное имя, чтобы файлы не перезаписывались на сервере.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
Martin

Завсегдатай


Зарегистрирован: 28.07.2009
Сообщения: 623
Откуда: Харьков

СообщениеДобавлено: Ср Окт 14, 2009 11:49 am    Заголовок сообщения:
Ответить с цитатой

agendus, Глава 4.2.4 У меня здесь все работало, только форма некорректно отображалась. Топик на admin-s.com создал, там какая то мелкая ошибка в коде была. Выложил-бы имедж формы, но сайта admin-s.com уже не существует.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> PHP Часовой пояс: GMT
Страница 1 из 1
 Главная страница сайта
 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
© Колисниченко Денис