Отправляет email-рассылки с помощью сервиса Sendsay

[TC] Обращение к файлу по методу POST (PHP)

Vande omentaina, Tiflocomp!
Вопрос вот какой: на хосте отключили register_globals (точнее, мы
пересели на новый хост).
Вроде как закачка файлов разрешена (хотя вопрос, как проверить?).
Мы не можем никак достучаться до файла по методу post. Чего только ни
делали, возвращает пусто.
Подскажите, каким образом вытащить файл?
$_POST['AvFile'] не помогает, где AvFile - имя файла в <input
type=file>.
Что делать?
Спасибо!

Ответить   Anarendil Sat, 21 Feb 2009 17:49:17 +0200 (#825706)

 

Ответы:

Приветствую всех.

0. В руководстве по php есть соответствующая глава.
1. В теге <form> должен быть атрибут enctype="multipart/form-data".
2. Можно установить ограничение на размер файла уже в форме:
<input type="hidden" name="MAX_FILE_SIZE" value="1000">

Но особо полагаться на это не надо.
3. Работать с суперглобалом $_FILES[]

$_FILES['userfile']['name']
Оригинальное имя файла на клиентской машине.

$_FILES['userfile']['type']
mime-тип файла, если браузер предоставил эту информацию. Пример: "image/gif".

$_FILES['userfile']['size']
Размер загруженного файла в байтах.

$_FILES['userfile']['tmp_name']
Временное имя файла, под которым загруженный файл был сохранён на сервере.

4. Не забыть переместить файл из временного хранилища в нужный каталог (доступный
для записи)
move_uploaded_file($_FILES['userfile']['tmp_name'], "/place/to/put/uploaded/file");
Или удалить его из временного хранилища.

Успехов. Анатолий.

Ответить   "i_chay" Sat, 21 Feb 2009 20:34:06 +0400 (#825716)

 

Vande omentaina, i_chay!
Через суперглобал $_FILES сейчас попробуем.
Там дело в том, что выдаётся ворнинг об ограничении прав на временную
директорию. Прочмодить её не удаётся, пишет, что это может сделать
только владелец, которого также сменить нельзя...

Ответить   Anarendil Sat, 21 Feb 2009 18:42:47 +0200 (#825718)

 

Приветствую всех.
Андрей пишет:

Ну, собственно, к владельцу и претензии. В руководстве php указано, что этот
каталог должен быть доступен для записи для любого пользователя, запускающего
php.
Можно попробовать сменить временный каталог, изменив директиву
upload_tmp_dir

в файле php.ini.
В зависимости от того, как подключен php, это делается либо через .htaccess,
либо через пользовательский php.ini (какой способ используется и поддерживается
ли такая возможность вообще, обычно пишут в тех.документации по хостингу).

Успехов. Анатолий.

Ответить   "i_chay" Sat, 21 Feb 2009 21:50:10 +0400 (#825751)

 

Vande omentaina, i_chay!
Если вывести
echo $_FILES[AvFile][name]
выводит
array[name]
Вопрос: почему??

Ответить   Anarendil Sat, 21 Feb 2009 18:58:59 +0200 (#825728)

 

Приветствую всех.
Андрей пишет:

Исходим из того, что вы все-таки набрали:
echo $_FILES['AvFile']['name'];
Это может быть массив, если в форме отправляется более одного файла.

В целях отладки можно так:
print_r($_FILES);

Успехов. Анатолий.

Ответить   "i_chay" Sat, 21 Feb 2009 21:39:45 +0400 (#825743)

 

Vande omentaina, i_chay!

Нифига (простите.... слов уже нету))))).
На такое он говорит, что unexpected t_encapsed_string. Почему? Не
спрашивайте, не знаю).
У меня вот вопрос какой: как узнать, закачался ли сам файл куда надо
или нет? Я имею в виду, хотя бы во временную директорию? print_r
($_FILES) даст ответ на этот вопрос?

Ответить   Anarendil Sat, 21 Feb 2009 19:49:26 +0200 (#825750)

 

Приветствую всех.
Андрей пишет:

Попробуйте заменить на двойные кавычки.
Вообще же, это нужно смотреть весь скрипт. Возможно, выше по тексту лишние (или
непарные) двойные или одинарные кавычки.
Пришлите скрипт мне.

Если не закачался, то скрипт обработки формы (атрибут action) не должен быть
вызван, т.е. поведение ничем не будет отличаться от получения обычной формы.

Только человеку, т.к. она ориентирована на вывод информации о массивах в текстовой
(plain) форме (даже не в html).
Если скрипт обработки формы получил-таки управление, то проверяйте существование
и размер файла во временном каталоге.
Ссылки по теме:
http://ru.php.net/features.file-upload
http://php.yar.ru/manual/ru/features.file-upload.php

Успехов. Анатолий.

Ответить   "i_chay" Sat, 21 Feb 2009 22:17:12 +0400 (#825757)