2010-06-08 4 views
3

У меня возникла проблема с передачей файлов с помощью NuSOAP. Я понимаю, что вы можете прочитать файл и передать его как строку, но он не работает. Вот пример:Передача Файл NuSOAP

Клиент:

require('libraries/nusoap/nusoap.php'); 
$url = "http://www.example.com"; 

$client = new nusoap_client($url); 
args = array('file_name' => 'myfile.zip'); 
$return = $client->call('getFile', array($args)); 

if(empty($return){ 
    echo "WHY IN THE WORLD IS THIS EMPTY!!!!!"; 
} 

Сервер:

require('libraries/nusoap/nusoap.php'); 
$server = new nusoap_server; 

$server->configureWSDL('server', 'urn:server'); 

$server->wsdl->schemaTargetNamespace = 'urn:server'; 

$server->register('getFile', 
    array('value' => 'xsd:string'), 
    array('return' => 'xsd:string'), 
    'urn:server', 
    'urn:server#getFile'); 

function getFile($value){ 

$returnData= ""; 
$filePath=$value['file_path']; 
$mode="r"; 

    if (floatval(phpversion()) >= 4.3) { 
     $returnData= file_get_contents($filePath); 
    } else { 
     if (!file_exists($filePath)){ 
      return -3; 
     } 

     $handler = fopen($filePath, $mode); 
     if (!$handler){ 
      return -2; 
     } 

     $returnData= ""; 
     while(!feof($handler)){ 
      $returnData.= fread($handler, filesize($filePath)); 
     }//end while 

     fclose($handler); 
    }//end else 

return $returnData; 
} 

Вот действительно странное. Если я верну имя файла или размер файла или что-то в этом роде, он будет работать. Он просто не вернет сам файл. Помоги пожалуйста.

+0

Я редактировал вопрос, чтобы включить недостающий $ от до того значения и а; от конца строки: $ filePath = значение ['file_path'] – SteB

ответ

0

В стороне сервера GetFile функции вы должны return base64_encode($returnData);

 Смежные вопросы

  • Нет связанных вопросов^_^