大家好。
我需要使用一个用作文件流的Web服务(它接收文件ID并通过流返回文件)。
然后在PHP中我必须处理这个过程。我一直在寻找解决方法,因为据我所知,PHP中的本机soap客户端没有这些功能。
我找到了处理二进制附件(MTOM)的WSO2(PHP的Web服务框架)。
我还没有对它进行测试,但真正的问题是,根据您的经验,消费具有这些特征的网络服务最聪明的方法是什么?
非常感谢你的时间。
答案 0 :(得分:2)
WSO2 WSF/PHP
使用MTOM
进行文件流传输更为复杂,这是其他语言支持的标准。
MTOM
使用base64
编码您可以在on 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%
,建议将文件吐入大块文件的块中