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


Автор: chiffa 28.11.2008, 01:16
Доброй ночи. Наверное у меня замылился глаз, но что то неработает обычный аплойд файлов. вот код пхп:

Код

<form enctype="multipart/form-data" action="upl.php" method="post" target='hiddenframe'>
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
Send this file: <input name="userfile" type="file">
<input type="submit" value="Send File">
</form>

<iframe id="hiddenframe" name="hiddenframe"></iframe>


вот файл upl.php:

echo $_FILES ['userfile']['tmp_name']."<br>"; либо же $HTTP_POST_FILES ['userfile']['tmp_name']  - долно ввести путь к дериктории с временным файлом, но почему то не выводит ничего $_FILES ['userfile']['error'] возвращяет значение 2. upload_tmp_dir - прописан.

Подскажите в чем может быть проблема?....

Автор: sandland 28.11.2008, 01:22
в форме ошибок вроде нет..Права досутпа на папку, в которую upload идет поменял?

Автор: ZlojEzh 28.11.2008, 01:57
http://ua.php.net/manual/en/features.file-upload.errors.php
Код

UPLOAD_ERR_FORM_SIZE 

Value: 2; The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form


видимо загружаете файл больше 30к

Автор: chiffa 28.11.2008, 21:37
хм... еще интереснее. теперь echo $_FILES['userfile']['tmp_name']."<br>"; выводит Undefined index: userfile in

Автор: Валерия 29.11.2008, 02:30
print_r сделай)

Автор: chiffa 29.11.2008, 13:22
делал 
print_r($_FILES) - Array ( )

print_r($_POST); - Array ( [MAX_FILE_SIZE] => 1000000000000 [userfile] => Бонус.doc )

Автор: teroni 29.11.2008, 15:24
А форма как объявлена?

Автор: ZlojEzh 29.11.2008, 17:22
а что выводит ini_get('file_uploads')?

Автор: chiffa 29.11.2008, 18:26
ZlojEzh,  выводит: 1

teroni, всмысле как обьявлена? в первом посте ж привел форму

Автор: Sanchezzz 29.11.2008, 19:17
может у тебя чтото с сервером?

в папку закачки проверь права на запись.

Код

function encodestring($st){
  $st=strtr($st,array(
                        "ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh", 
                        "щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
                        "Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH", 
"Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",
"ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye",
"_"=>"_"));
return $st;
}

 $dir = $_SERVER['DOCUMENT_ROOT']; //куда закачиватся будет 

    if (!isset($_FILES["Filedata"]) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0) {
        echo "There was a problem with the upload";
        exit(0);
     }else{
     move_uploaded_file($_FILES['Filedata']['tmp_name'], $dir."/".trim(encodestring($_FILES['Filedata']['name'])) );
  echo 'upload complite';
}


Автор: chiffa 29.11.2008, 19:46
это все происходит локально. под виндой.... основная проблема то что неполучается определить изначальный путь файла...

Автор: Sanchezzz 29.11.2008, 19:55
у меня тоже под вендой работает 

$_FILES['Filedata']['tmp_name'] тут твой путь по умолчанию это временная директория .
Посмотри что написано в php.ini что написано

настройки в php.ini должны быть

file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
upload_tmp_dir = /tmp
; Maximum allowed size for uploaded files.
upload_max_filesize = 12M

сперва файл загружается $_FILES['Filedata']['tmp_name'] затем ты его переносишь куда надо фун. move_uploaded_file.

Автор: teroni 29.11.2008, 23:00
Цитата(chiffa @  29.11.2008,  18:26 Найти цитируемый пост)
teroni, всмысле как обьявлена? в первом посте ж привел форму 

Если как в первом, то всё ОК.
Но дальше Вы писали:
Цитата(chiffa @  29.11.2008,  13:22 Найти цитируемый пост)
print_r($_FILES) - Array ( )

print_r($_POST); - Array ( [MAX_FILE_SIZE] => 1000000000000 [userfile] => Бонус.doc )


А такие результаты приходят если в
<form enctype="multipart/form-data" action="upl.php" method="post" target='hiddenframe'>
пропущено enctype="multipart/form-data"


З.Ы. И что характерно, в первом сообщении было $_FILES ['userfile']['error']  = 2, а во втором уже $_FILES - пустой массив   smile 

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