这样的形式:
<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);
但是没有成功。我怎么能这样做?
答案 0 :(得分:3)
我不确定enctype="text/xml"
元素中的<form>
是否会使浏览器将文件的内容作为原始输入发送到服务器。有人可能想测试是否可能,但我不知道。
但是,您可以执行standard file upload with PHPDocs并处理将自动创建的临时文件:
$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。
<form>
没有mimetype
属性。删除它。enctype
属性does not accept text/xml
as a value将其替换为multipart/form-data
name
属性毫无意义,在这种情况下请使用id
。由于您使用的是PHP,因此该文件将显示在$_FILES[]
中,从那里读取。