в очередной раз про Upload файлов

  • Автор темы Автор темы KorP
  • Дата начала Дата начала

KorP

Новичок
в очередной раз про Upload файлов

никак не пойму в чём косяк. есть скрипт, работает нормально, аплоадит в заданную папку файл и всё гуд, на его основе делают систему по работе с картинками - аплоад файла не происходит ни в какую. Постом файл отправляется скрипту, $_FILES - массив, echo $_FILES['userfile']['name']; ничего не возвращает, в скрипте поставил error_reporting(E_ALL); в итоге получаю Undefined index: userfile, userfile - имя поля в форме для отправки файла, print_r($_POST); выдаёт массив данных из формы и картинку в том числе
http://phpclub.ru/detail/article/upload читал, по нему изначально свой скипт и делал, всё работало, а здесь нет
в чём косяк никак не пойму...в поиске про такое вродь не нашёл
 
проверь еще раз, все ли ты делаешь по инструкции.
как форму, так и обработчик.
 
эм...да, забыл в форму добавить enctype='multipart/form-data' но теперь не вижу что бы сама картинка передавалась скрипту, хотя при этом $_FILES['userfile']['name'] возвращает правильное имя файла, носоответственно аплоад опять не происходит...пути проверил, вродь всё верно, картинку двигаю как по ману - if (move_uploaded_file($_FILES['userfile']['tmp_name'], $dir.$_FILES['userfile']['name']))
 
двигать ничего не надо.
надо проверять свои безответственные утверждения.
аплоад опять не происходит? как ты это проверил?
аплоад - это загрузка файла на сервер.
файл загружается во временный файл

какая функция проверяет существование файла?
где ты её вызываешь?
 
как проверяю? echo $_FILES['userfile']['tmp_name']; должен возвращать путь к временному файлу. PHP Version 4.4.5, по муолчанию upload_tmp_dir - no value. как ещё проверить - не знаю
 
в ['userfile']['error'] что-нибудь есть?
вывод ошибок включен?
 
['userfile']['error'] посмотрел, выдаёт - 2
error_reporting(E_ALL); - ничего не выдаёт
 
error_reporting(E_ALL); - это не вывод ошибок.
а уровень отображения.
 
Помогите пожалуйста, переменная "USERFILE" даже не передается, не знаю в чем ошибка?
--------------------------------------------------------------------------------------
Файл с которого отправляю:
PHP:
<form action="ReceiveFile.php" method="post" enctype="multipart/form-data">
<input type="file" name="userfile">
<input type="submit" name="submit" value="Добавить">
</form>
-------------------------------------------------------------------------------------
Принимаю:
PHP:
  if(is_uploaded_file($_FILES["userfile"]["tmp_name"])){
    $lastid = "file.txt";
    $tempfile = $_FILES['userfile']['tmp_name'];
    if(copy($tempfile, "./DOWNLOADS/".$lastid)){
      echo "Скопирован успешно - ID = ".$lastid."<br>";
    }else{exit("Не удалось скопировать файл.");}
  }else{echo "Не удалось загрузить файл, даже как временный.";}
Такая ощибка:
Notice: Undefined index: userfile in ...
 
вывод переменной делай не через echo, а через var_dump();

потом, файл перемещай не функцией copy, а функцией move_uploaded_file($tmp_path, $new_path)


пс. multipart/form-data возьми в кавычки
 
Кавычки я ставил, убирал, это влияние не имеет.
Дело в том что оно работает на другом сервере, а на Denver'е нет, то есть на Denver'e не переменная через $_FILES не передается вообще. Мне необходимо тестировать пока, так что прямо на сервере делать это не актуально.
Помогите исправить ошибку, как я понял исправлять надо в Denver'e а не в моих кодах.
Не очень разбираюсь в "php.ini", но там разрешено загрузки файла на сервер, максимальный размер 2 МБ, директория указана, так в чем же дело?
 
Кавычки надо поставить, и не убирать. Это не браслетик, который захотел - снял, захотел - надел. Это синтаксис. Разговаривать с тобой будут только после того, как ты сделаешь нормальную форму, и приведешь здесь результат ЕЁ работы. Без "ой, я там забыл, а тут перепутал".
 
Отнюдь как "браслетик". Этот синтаксис игнорируют известные все броузера, но спасибо за совет по заданию вопросов.
Пожалуйста, ответе на мой предыдущий пост.
 
Мальчик.
На вопросы "В чем зе дело" отвечают не посторонние люди, а сам программист. Садись и разбирайся.
 
Да уж, ***** ты только умеешь людей опускать, но я не в обиде если что хотя тебе это без разницы, "Мальчик" наверное ты написал не подумав не знаю возраста того кому ты обращаешься, хотя по моим вопросам можно было так и подумать не самостоятельный человек как будто, просто несколько часов про мучался с этой проблемой.
Спасибо еще раз, буду разбираться сам дальше..
 
Дело не в опускать.
Ты приходишь к незнакомым людям, которые тебя видят в первый раз, а твой денвер вообще в глаза не видели. И задаешь вопрос "дорогие ученые. у меня в подвале происходит подземный стук. Объясните, отчего он происходит".

И думаешь, что все вместе с тобой начнут дружно гадать - "а может эта настройка? А может - другая?".
Никто этого делать не будет. Потому что решая свои проблемы - тоже не делает. Проблемы в программировании решаются не гаданием, а отладкой. Выводом ошибок, переписыванием и сокращением кода. Сделать это кроме тебя на твоем денвере - некому.
var_dump($_FILES);
var_dump($_POST); что выводит?
 
(Все, все понял что не правильно спрашивал)
Я не гадал, но когда ошибка есть когда все правильно, произвольно начинаешь гадать..
Переменные через $_FILES вообще не передаются:
var_dump($_FILES):
array(0) { }
var_dump($_POST);
array(2) { ["submit"]=> string(8) "Добавить" }

-~{}~ 16.02.09 15:59:

Всем спасибо, исправил..
Оказывается не правильно была указана директория для временных файлов в "php.ini".
Но на хостинге ошибка такая:
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to access /uploads/file.txt in ...
Попытаюсь исправить, но если не сложно могли бы ответить, как разрешить доступ, ведь там на хостинге у меня нет доступа к "php.ini"?
 
кто ж тебе даст на серваке в корень писать?

-~{}~ 16.02.09 13:14:

пиши к себе в домашнюю директорию
 
Сверху