想要阅读SOAP POST的文件大小,是否有任何最佳实践?
$data = fopen('php://input','rb');
$content = fread($data,5000);
$dom = new DOMDocument();
$dom->loadXML($content);
希望5000是动态的,因为每个SOAP POST大小都不同或者这有关系吗?
使用fread()会很棒
答案 0 :(得分:2)
您可以尝试以下方式:
$xml = file_get_contents('php://input')
无论数据的长度如何,这都将获得所有内容。
答案 1 :(得分:2)
嗯。如果您可以使用“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);
上面的代码是自我解释的,因此无需进一步解释。稍微注意一下,如果长度为longer than 8192 bytes,则内容将被剪裁。因此,您最好检查读取长度以查看它是否被剪裁。 (如果您使用'file_get_contents()
',则无需担心。
希望这有帮助