|
Автор |
Сообщение |
agendus
Зарегистрирован: 11.10.2009 Сообщения: 4
|
|
|
|
Доброго времени суток, Денис.
Вопрос от начинающего изучать 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 ничего не передается. У меня что-то не так со средой? Подскажите пожалуйста |
|
Вернуться к началу |
|
|
Амир
Участник тусовки
Зарегистрирован: 21.07.2009 Сообщения: 135
|
|
|
|
А можно взглянуть на код обработчика uploader.php? |
|
Вернуться к началу |
|
|
agendus
Зарегистрирован: 11.10.2009 Сообщения: 4
|
|
|
|
Я сейчас на работе, кода нет под рукой. Могу только по памяти:
Код: |
// проверка установки переменных
if isset(...)
{
// присвоение выбранному файлу имени
move_uploaded_file(...)
}
|
Настоящий код обработчика покажу вечером, из дома.
Но в целом он такой - весь код в блоке if isset. Проверяются наверное переменные из php.ini, типа разрещена ли передача файлов. Ну и вызывается ф-ция закачки на сервер. И вот весь этот код, даже с комментариями, я вижу в браузере после нажатия кнопки "загрузить" |
|
Вернуться к началу |
|
|
Амир
Участник тусовки
Зарегистрирован: 21.07.2009 Сообщения: 135
|
|
|
|
если выводит сам код, а не результат его работы, то, (при условии что твой локалхост настроен) интерпретатор php не может понять откуда начинается код и что обрабатывать.
Поставь <?php в самом начале, это должен быть самый первый символ и ?> в самом конце, последний символ. |
|
Вернуться к началу |
|
|
agendus
Зарегистрирован: 11.10.2009 Сообщения: 4
|
|
|
|
Да, правда, я забыл обрамление кода в <? ?>. Теперь код выполняется... вот только происходит зависание браузера и файл не загружается. Код следующий:
Код: |
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
|
|
|
|
Запустил сценарий еще раз. Все ОК, файл загружается, только вот вместо выбранного мной файла в целевой директории оказывается странный файл. PHP генерит наверное имя и расширение - у меня он выдал php3A.tmp |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Так и нужно - это случайное имя, чтобы файлы не перезаписывались на сервере. |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
Martin
Завсегдатай
Зарегистрирован: 28.07.2009 Сообщения: 623 Откуда: Харьков
|
|
|
|
agendus, Глава 4.2.4 У меня здесь все работало, только форма некорректно отображалась. Топик на admin-s.com создал, там какая то мелкая ошибка в коде была. Выложил-бы имедж формы, но сайта admin-s.com уже не существует. |
|
Вернуться к началу |
|
|
|
|