如何上传文件并使用SimpleXML处理它?

时间:2012-09-13 18:16:52

标签: php xml

我正在使用此表单:

<form action="abc.php" method="post" name="fname">
   <input type="file" name="up" />
   <input type="submit" name="submit" value="Submit"/>
</form>

由PHP处理:

$par = $_POST['up'];
$xml = @simplexml_load_file(file_get_contents($par));
$xml = $xml->getName();
echo $xml;

并且它给了我这个错误消息:unable to load external entity。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

  • 您需要enctype="multipart/form-data"中的form属性接受文件:

    <form enctype="multipart/form-data" action="abc.php" method="post" name="fname">
    
  • 文件进入$_FILES,而不进入$_POST,因此您的$par初始化应为:

    $par = $_FILES['up'];
    
  • Dj Boris所说的是正确的,你对simplexml_load_file的呼吁应该是:

    $xml = simplexml_load_file($par['tmp_name']);
    

答案 1 :(得分:1)

其他答案都不正确。如果您通过simplexml_load_file() $_FILES['index'],则会收到错误消息,说明以下内容:

  

simplexml_load_file()期望参数1是有效路径,给定数组

解决方案是将$_FILES数组中的临时文件名传递给它。

解决方案:

$svg = simplexml_load_file($_FILES['up']['tmp_name']);

答案 2 :(得分:0)

你在写:

simplexml_load_file(file_get_contents($par));

但我想,应该是

simplexml_load_file($par);

根据http://php.net/manual/de/function.simplexml-load-file.php