想要阅读 SOAP POST 的文件大小,有什么最佳实践吗?
$data = fopen('php://input','rb');
$content = fread($data,5000);
$dom = new DOMDocument();
$dom->loadXML($content);
希望 5000 是动态的,因为每个 SOAP POST 大小都会不同,或者这有关系吗?
使用 fread() 会很棒
您可以尝试以下方法:
$xml = file_get_contents('php://input')
这将获取所有内容,无论数据的长度如何。
嗯。如果你可以用“ fread
”阅读它,我认为你没有理由不能用“”阅读完全相同的文本file_get_contents()
。我用了几次,记得我都试过了。
就 ' fread
' 的最佳实践而言,您需要的是可以从 getallheaders() 获取的文件大小。
所以,如果你仍然喜欢使用 ' fread
' 这里是代码。
$data = fopen('php://input','rb');
$Headers = getallheaders();
$CLength = $Headers['Content-Length'];
$content = fread($data,$CLength);
$dom = new DOMDocument();
$dom->loadXML($content);
上面的代码是自我解释的,所以不需要进一步解释。请注意,如果长度超过 8192 字节,内容将被剪裁。所以你最好检查读取长度,看看它是否被剪裁。(不过,如果您使用 ' ',则无需担心file_get_contents()
)。
希望这可以帮助