Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > $HTTP_POST_FILES Не работает.


Автор: gluck 13.6.2007, 19:25
Мне нужно записать файл на сервер, но HTTP_POST_FIles не работает, может что-то в htaccess нужно прописать? Кто-нибудь сталкивался с таким? Посоветйте пожалуйста

Автор: skyboy 13.6.2007, 19:33
может, твой код некорректен? отчего его скрываешь?

Автор: sTa1kEr 13.6.2007, 19:34
$HTTP_POST_FILES - это устаревшее название переменной. Используйте вместо нее $_FILES.
http://ru2.php.net/manual/ru/features.file-upload.php

Добавлено через 2 минуты и 10 секунд
http://ru2.php.net/manual/ru/ini.core.php#ini.register-long-arrays
Цитата

     Сообщает PHP, следует ли регистрировать устаревшие длинные предопределенные переменные типа $HTTP_*_VARS. Если включены (по умолчанию), длинные предопределенные переменные PHP, например $HTTP_GET_VARS, будут объявлены. Если вы их не используете, рекомендуем отключить их из соображений производительности. Вместо них следует использовать суперглобальные массивы, например $_GET.

    Эта директива стала доступна начиная с версии PHP 5.0.0. 

Автор: gluck 13.6.2007, 19:39
вот код
Код

$path="../banners/".$HTTP_POST_FILES["image"]["name"];
$source=$HTTP_POST_FILES["image"]["name"];

copy($image,$path);


я пробовал и HTTP_POST_FILES и просто $_FILES

Добавлено через 1 минуту и 23 секунды
вот код
Код

$path="../banners/".$HTTP_POST_FILES["image"]["name"];
$source=$HTTP_POST_FILES["image"]["name"];

copy($image,$path);


я пробовал и HTTP_POST_FILES и просто $_FILES

Автор: skyboy 13.6.2007, 19:47
так верно! мануалы надо глядеть! вместо "ручного" копирования используем специальную функцию http://www.php.net/manual/ru/function.move-uploaded-file.php b не имеем проблем, по крайней мере, с правами доступа к temp-папке интерпретатора php, куда складываются все загруженные файлы, но которая находится отнюдь не в папке твоего сайта.

Автор: sTa1kEr 13.6.2007, 19:54
gluck, что за переменная $image?
В целях безопасности, следует использовать функцию move_uploaded_file() вместо copy().
$HTTP_POST_FILES["image"]["name"] может содержать полный путь к файлу, т.ч. следует использовать функцию basename().
Так же желательно проверять наличие ошибок в элементе ["error"]:
Код

$path="../banners/".basename($_FILES["image"]["name"]);
$source=$_FILES["image"]["tmp_name"];
if ($_FILES['image']['error'] == UPLOAD_ERR_OK)
{
   if (!move_uploaded_file($source, $path))
   {
      echo "Error moving tempory file";
   }
}
else
{
   echo "Error uploading file. Error Code: ".$_FILES['image']['error'];
}

Автор: gluck 13.6.2007, 20:36
Код

if(is_uploaded_file($_FILES['image']['tmp_name']))
      {
         $mimage="messimages/".basename($_FILES["image"]["name"]);
         $source=$_FILES["image"]["tmp_name"];
         echo $mimage;
         move_uploaded_file($source, $mimage);
         /*if ($_FILES['image']['error'] == UPLOAD_ERR_OK)
         {
            if (!move_uploaded_file($source, $mimage))
            {
              echo "Error moving tempory file";
            }
         }
         else
         {
            echo "Error uploading file. Error Code: ".$_FILES['image']['error'];
         }       */
      }
      else{echo "error";}


выводит error.
млин уже заколебался, не пойму почему не работает

Автор: gluck 13.6.2007, 21:12
все разобрался! нужно было в форме указать
Код

   enctype="multipart/form-data"


спасибо всем!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)