Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Давайте еще раз для новичков рассмотрим ЗАГРУЗКУ ФАЙЛОВ НА СЕРВЕР / 11 сообщений из 11, страница 1 из 1
20.08.2003, 15:03
    #32241956
Groove
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте еще раз для новичков рассмотрим ЗАГРУЗКУ ФАЙЛОВ НА СЕРВЕР
Сабж, господа!

Примеры взяты с http://phpclub.net

Пример 19-1. Форма для загрузки файлов
Код: plaintext
1.
2.
3.
4.
5.
<form enctype= "multipart/form-data"  action= "ИСПОЛНЯЕМЫЙ ПХП-СКРИПТ"  method= "post" >
<input type= "hidden"  name= "MAX_FILE_SIZE"  value= "1000 ">
Send this file: <input name= "userfile"  type= "file" >
<input type= "submit"  value= "Send File" >
</form>
 


Пример 19-2. Проверка загрузки файлов
Следующие пример предназначены для версий PHP 4 больше 4.0.2. См. о функциях is_uploaded_file() и move_uploaded_file().
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?php 
// В PHP ранее  4 . 1 . 0 , должна использоваться $HTTP_POST_FILES  вместо $_FILES.
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
    copy($_FILES['userfile']['tmp_name'],  "/place/to/put/uploaded/file" );
} else {
    echo  "Possible file upload attack. Filename: "  . $_FILES['userfile']['name'];
}
 /* ...или... */ 
move_uploaded_file($_FILES['userfile']['tmp_name'],  "/place/to/put/uploaded/file" );
?>


И рассмотрим эти действия в конкретном случае:

необходимо загрузить файл в директорию image, которая находится в той же директории, что и исполняемый скрипт, и плюс переименовать файл в img1234.jpeg, например.

Так вот дома у меня этот примео не прокатил, выдал "Possible file upload attack". Загрузка неудачной была. В чем может быть дело?

php4
apache



И вообще смысл загрузки файлов на сервер как я понял такой:

Есть временная директория на веб-сервере, в которую аплоадятся файлы.
Все без исключения. Затем его надо либо переместить, либо скопировать.
Иначе, хотя это произойдет в любом случае, файл через некоторое время будет удален (временный).

Я прав?

Ну тогда в чем проблема?
Почему файло не зааплодилось???



ВСЕМ ЗНАТОКАМ ПХП ПРОСЬБА ОТВЕТИТЬ, ПОТОМУ, ЧТО ЭТО БУДЕТ ИНТЕРЕСНО БОЛЬШИНСТВУ НОВИЧКОВ!
НЕСМОТРЯ НА ТО, ЧТО ВО ВСЕХ ФАКАХ ПОДНЯТ ЭТОТ ВОПРОС,
НО ДО КОНЦА НЕ РАСПИСАН...


Как всегда,
заранее вам благодарен! (c)Groove :-))
...
Рейтинг: 0 / 0
20.08.2003, 15:57
    #32242068
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте еще раз для новичков рассмотрим ЗАГРУЗКУ ФАЙЛОВ НА СЕРВЕР
а на пхпклубе спросить боишься ? :)
скорее всего проблема в
Код:
1.
<input type="hidden" name="MAX_FILE_SIZE" value="1000">

Эта строка означает что файл не может превышать 1000 байт.

А вообще в php есть 2 замечательные функции:
echo и print_r.

Выводишь print_r($_FILES) и смотришь что там написано.
Если в броузере работаешь то удобнее
echo "<pre>";
print_r($_FILES);
echo "</pre>";
...
Рейтинг: 0 / 0
21.08.2003, 09:23
    #32242612
Groove
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте еще раз для новичков рассмотрим ЗАГРУЗКУ ФАЙЛОВ НА СЕРВЕР
Уважаемый Макс М.!
Спросить никогда не боялся и не стеснялся. Гораздо стыднее не знать и молчать!

Просто пхпклуб для меня проблематичен
если этот форум грузится за полсекунды, то там каждая страничку по 5-7 минут.

А за ответ спасибо!
Буду экспериментировать
...
Рейтинг: 0 / 0
21.08.2003, 14:20
    #32243295
AKoval
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте еще раз для новичков рассмотрим ЗАГРУЗКУ ФАЙЛОВ НА СЕРВЕР
2Groove

У меня пример с phpclub работает один в один (apache1.3.27+php4.2.1 под Linux RedHat7 и под Win98).
Проблема возможно в php.ini в секции File Uploads (file_uploads=Off а нужно явно file_uploads=On). По крайней мере, когда я у себя на Win98 сделал off, тоже стал получать сообщение Possible file upload attack.
...
Рейтинг: 0 / 0
22.08.2003, 06:57
    #32244012
Groove
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте еще раз для новичков рассмотрим ЗАГРУЗКУ ФАЙЛОВ НА СЕРВЕР
Большое спасибо, уважаемый Maкс и AKoval!!!
Дело было действительно в этих двух вещах
file_uploads=Off
и
<input type="hidden" name="MAX_FILE_SIZE" value="1000">


исправил все заработало!!!

Вот только еще вопрос

как ПРАВИЛЬНО проверять был ли подан файл на загрузку?

Код: plaintext
1.
2.
3.
4.
//можно тремя способами, навскидку

 1 . if(!$userfile)
 2 . if(!$_POST[ "userfile" ])
 3 . if(!$_FILES['userfile']['name'])


какой правильный?
или может быть четвертый метод правильнее? ну тот который Ваш?
...
Рейтинг: 0 / 0
22.08.2003, 14:17
    #32244663
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте еще раз для новичков рассмотрим ЗАГРУЗКУ ФАЙЛОВ НА СЕРВЕР
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
... // файл біл закачан
} else {
// файл не был закачан
// читае $_FILES['userfile']['error'] чтобы узнать причину
...

}
...
Рейтинг: 0 / 0
22.08.2003, 14:49
    #32244746
Groove
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте еще раз для новичков рассмотрим ЗАГРУЗКУ ФАЙЛОВ НА СЕРВЕР
Собственно вопрос то был немного в другом:

не определить ПОЧЕМУ НЕ ЗАГРУЗИЛСЯ файл,
а БЫЛ ЛИ собственно файл для загрузки

Но все равно, большое спасибо!
...
Рейтинг: 0 / 0
22.08.2003, 15:46
    #32244923
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте еще раз для новичков рассмотрим ЗАГРУЗКУ ФАЙЛОВ НА СЕРВЕР
первая строка моего кода как раз и определяет, был ли закачан файл
...
Рейтинг: 0 / 0
02.09.2003, 13:01
    #32253613
Groove
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте еще раз для новичков рассмотрим ЗАГРУЗКУ ФАЙЛОВ НА СЕРВЕР
И еще в догонку, (PHP+IIS) вот такое извращение использую, но тем не менее:
файлы загруженные на сервер куда ложатся? временно...
а то что то выдает типа я ничего и не пытался грузить...
Код: plaintext
1.
2.
3.
4.
5.
6.
    
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
    copy($_FILES['userfile']['tmp_name'],  "/place/to/put/uploaded/file" );
} else {
    echo  "Possible file upload attack. Filename: "  . $_FILES['userfile']['name'];
}

выдает:
Код: plaintext
Possible file upload attack. Filename: 
...
Рейтинг: 0 / 0
02.09.2003, 14:26
    #32253718
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте еще раз для новичков рассмотрим ЗАГРУЗКУ ФАЙЛОВ НА СЕРВЕР
а что выдает print_r($_FILES); ?
...
Рейтинг: 0 / 0
03.09.2003, 07:03
    #32254196
Groove
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте еще раз для новичков рассмотрим ЗАГРУЗКУ ФАЙЛОВ НА СЕРВЕР
Отбой!!!
в form кто то стер
Код: plaintext
enctype= "multipart/form-data" 

все запрыгало...


Просто очень не удобно дома отлаживать на апаче, а на работе на IIS

вот и мечешся меж двух огней.

Хотя в итоге все рано получается еще одна работа
дома (апач+виндаХР)
на работе (IIS+виндаХР)
хостинг (апач+юникс)
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Давайте еще раз для новичков рассмотрим ЗАГРУЗКУ ФАЙЛОВ НА СЕРВЕР / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]