simplexml_load_file не загружает файл - PullRequest
0 голосов
/ 23 марта 2012

Я пытаюсь заставить работать следующий код:

if (isset($_POST['file'])){
    if(file_exists($_POST['file'])){
        echo "here";
        $fixture = simplexml_load_file($_POST['file']) or die ('error');
    }
}

Он повторяет «здесь», но не загружает файл.

Есть идеи?


<HTML>
<HEAD>
<TITLE>File Upload</TITLE>
</HEAD>
<BODY>
<?php
if ((($_FILES["file"]["type"] == "text/xml"))
&& ($_FILES["file"]["size"] < 20000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists(time() . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      time() . $_FILES["file"]["name"]);
      echo "Stored in: " . time() . $_FILES["file"]["name"];
      echo "<form action='league.php' method='post'>";
      echo "<input type='hidden' value='" . time() . 
                    $_FILES["file"]["name"] . "' name='file'>";
      echo "<input type='submit' /></form>";
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>
</BODY>
</HTML>

Загружаемый файл является файлом XML, а имя файла публикуется как скрытая переменная для предыдущего кода.


<?xml version="1.0"?>
<title>Results</title>
<results>
    <result>
        <hometeam>
            <name>Team A</name>
            <score>6</score>
        </hometeam>
        <awayteam>
            <name>Team B</name>
            <score>0</score>
        </awayteam>
    </result>
</results>

1 Ответ

0 голосов
/ 23 марта 2012

Используйте libxml_get_errors () , чтобы получить подробные ошибки, иначе мы просто сможем угадать, что происходит.

<?php
// somewhere at the top
libxml_use_internal_errors(true);

// ....
foreach(libxml_get_errors() as $error) {
  echo $error->message , '(',  $error->file , ':' ,  $error->line , ')<br>';
}
...