2013-09-16 4 views
0

Мне сложно загружать файлы для работы на php.

  • Я бег PHP 5, так что я должен иметь $ _FILES переменной
  • Мой php.ini показывает, что загрузка файлов включена, и что я не пытаюсь загрузить файл, который слишком большой
  • На моем диске достаточно места

Ожидаемое: информация о загруженных файлах. Got: empty $ _FILES

Вот моя форма/скрипт. Что я делаю не так?

<!DOCTYPE html> 
<html lang="en"> 
<body> 

<?php 

if($_SERVER['REQUEST_METHOD'] !== "POST"): ?> 

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
<label for="file">Upload a file:</label> 
<input type="file" name="file" id="file"><br/> 
<button type="submit">Analyze</button> 
</form>  

<?php endif; ?> 

<?php if($_SERVER['REQUEST_METHOD'] == "POST"): 

    print_r($_FILES); // debugging 

if ($_FILES["file"]["size"] < 20000) 
{ 
    if ($_FILES["file"]["error"] > 0) 
    { 
     echo "<p>Error: " . $_FILES["file"]["error"] . "</p>"; 
    } 
    else 
    { 
     echo "<p>Upload: " . $_FILES["file"]["name"] . "</p>"; 
     echo "<p>Type: " . $_FILES["file"]["type"] . "</p>"; 
     echo "<p>Size: " . ($_FILES["file"]["size"]/1024) . " kB</p>"; 
     echo "<p>Stored in: " . $_FILES["file"]["tmp_name"] . "</p>"; 
    } 
} 
else 
{ 
    echo "Invalid file. Please make sure your file is a plain text file and is small enough for this program to analyze."; 
} 

endif; ?> 

</body> 
</html> 
+0

'enctype' отсутствует. – mario

ответ

7

Вы забыли свой атрибут типа кодирования в вашем <form> тег:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" 
    enctype="multipart/form-data"> 
3

Вы должны дать enctype="multipart/form-data". Обновление так:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" 
     enctype="multipart/form-data"> 
3

По данным формы по умолчанию передается с помощью application/x-www-form-urlencoded кодирования (это тот же формат, который используется в строке запроса для запроса GET), который не поддерживает данные файла.

specification От:

Если тип въездной является «файл», замените его значение с именем файла только.

Необходимо использовать кодировку multipart/form-data. Вы можете указать это с помощью enctype attribute

<form ... enctype="multipart/form-data"> 
Смежные вопросы