1

美好的一天,伙计们。

我需要使用作为文件流式传输的 Web 服务(它接收文件 ID 并通过流返回文件)。

然后在 PHP 中我必须处理这个过程。我一直在寻找如何做到这一点的解决方案,因为据我所知,PHP 中的本机肥皂客户端不具备这些功能。

我找到了处理二进制附件 (MTOM) 的 WSO2 (Web Services Framework for PHP)。

我尚未对其进行测试,但真正的问题是,根据您的经验,使用具有这些特征的 Web 服务最聪明的方法是什么?

非常感谢您的宝贵时间。

4

1 回答 1

2

WSO2 WSF/PHPMTOM使用其他语言支持的标准进行文件流传输是一种更好更复杂的方法。

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%,建议将文件分成块来增加文件

于 2012-04-11T23:27:40.180 回答