美好的一天,伙计们。
我需要使用作为文件流式传输的 Web 服务(它接收文件 ID 并通过流返回文件)。
然后在 PHP 中我必须处理这个过程。我一直在寻找如何做到这一点的解决方案,因为据我所知,PHP 中的本机肥皂客户端不具备这些功能。
我找到了处理二进制附件 (MTOM) 的 WSO2 (Web Services Framework for PHP)。
我尚未对其进行测试,但真正的问题是,根据您的经验,使用具有这些特征的 Web 服务最聪明的方法是什么?
非常感谢您的宝贵时间。
美好的一天,伙计们。
我需要使用作为文件流式传输的 Web 服务(它接收文件 ID 并通过流返回文件)。
然后在 PHP 中我必须处理这个过程。我一直在寻找如何做到这一点的解决方案,因为据我所知,PHP 中的本机肥皂客户端不具备这些功能。
我找到了处理二进制附件 (MTOM) 的 WSO2 (Web Services Framework for PHP)。
我尚未对其进行测试,但真正的问题是,根据您的经验,使用具有这些特征的 Web 服务最聪明的方法是什么?
非常感谢您的宝贵时间。
WSO2 WSF/PHP
MTOM
使用其他语言支持的标准进行文件流传输是一种更好更复杂的方法。
MTOM
用于base64
对文件进行编码,如果您不想使用,您可以在 on 上实现WSO2
不知道为什么要stream
请注意,stream
到目前为止,您可以随时打开任何文件,因为您拥有该文件的副本,所以我认为这不是最重要的..关键是将文件发送safely
到服务器
使用示例SoapClient
客户
ini_set("soap.wsdl_cache_enabled", "0");
$client=new SoapClient(PATH_TO_WSDL,array('encoding'=>'ISO-8859-1'));
$data = file_get_contents(PATH_TO_FILE);
$ret = $client->recieveFile(base64_encode($data));
服务器
ini_set("soap.wsdl_cache_enabled", "0");
const PATH_TO_WSDL = "b.php?wsdl" ;
$client=new SoapClient(PATH_TO_WSDL,array('encoding'=>'ISO-8859-1'));
$data = file_get_contents(PATH_TO_FILE);
$ret = $client->recieveFile(base64_encode($data));
请注意,对于非常大base64
的文件33%
,建议将文件分成块来增加文件