直接在PHP中读取传递的XML文件

时间:2011-12-23 16:30:52

标签: php xml forms

这样的形式:

<form action="/appapi/checkout/" method="post" mimetype="text/xml" enctype="text/xml" name="form1">
<input type="file" name="xmlfile">
<br />
<input type="submit" name="Submit" value="Submit">
</form>

将xml文件传递给appapi/checkout/

我该如何阅读此文件?或者在我阅读之前是否需要将其保存在我的服务器上?

就像在这里完成的那样:receive xml file via post in php

我试图:

$url = 'php://input';

$xml = simplexml_load_file($url);

但是没有成功。我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

我不确定enctype="text/xml"元素中的<form>是否会使浏览器将文件的内容作为原始输入发送到服务器。有人可能想测试是否可能,但我不知道。

但是,您可以执行standard file upload with PHP­Docs并处理将自动创建的临时文件:

$xml = simplexml_load_file($_FILES['xmlfile']['tmp_name']);

这需要表单enctype="multipart/form-data"。另外,通过查看$_FILES['xmlfile']['error']首先检查文件是否已成功上传是明智的,当没有错误发生时它是0

$upload = (object) $_FILES['xmlfile'];
$xml = $upload->error ? NULL : simplexml_load_file($upload->tmp_name);

顺便说一句,当PHP脚本完成时,将自动删除临时文件。

答案 1 :(得分:1)

首先,修复HTML。

  1. <form>没有mimetype属性。删除它。
  2. enctype属性does not accept text/xml as a value将其替换为multipart/form-data
  3. 除非您需要使用JavaScript访问表单,否则name属性毫无意义,在这种情况下请使用id
  4. 由于您使用的是PHP,因此该文件将显示在$_FILES[]中,从那里读取。