0

在 StackOverflow 和 Google 上搜索了很多,但似乎无法找到针对这种特定情况的答案

我正在使用一个通过 PHP POST 向我发送 XML 文件的客户端,这是我使用的代码:

$xml = file_get_contents('php://input');
$xmlStripped = stripslashes($xml);
$xmlContent = simplexml_load_string($xmlStripped);
print_r($xmlContent);

为了进行测试,我还将 XML 文件直接上传到我的服务器,并这样做:

$xml = file_get_contents('http://www.site.com/linktoxml.xml');
$xmlStripped = stripslashes($xml);
$xmlContent = simplexml_load_string($xmlStripped);
print_r($xmlContent);

然后它工作正常,它将 XML 作为一个对象打印出来。

我用来上传的表格是这样的:

<form action="http://app.site.com/upload" method="POST">
<input type="file" name="file" id="file ">
<input type="submit" value="upload">
</form>
4

2 回答 2

0

尝试使用来自的实际文件

$_FILES['userfile']['tmp_name'] 

而不是

"php://input"

如果你坚持使用 php://input,试试这个hack

于 2012-05-08T11:28:14.580 回答
0

file_get_contents('php://input');通常会给你原始的RFC 1867数据,而不是文件本身。文件数据被封装在这个请求数据中。在您的情况下,它会给出一个空字符串,因为 PHP 在处理这些数据后会丢弃这些数据以节省内存。

然而,PHP 会自动处理和解码 RFC 1867 数据。你要做的是(除了验证$_FILES['file']['tmp_name']存在并且是一个字符串):

$xml = file_get_contents($_FILES['file']['tmp_name']);
于 2012-05-08T11:28:59.137 回答