2010-06-08 6 views
3

J'ai un problème pour transférer des fichiers en utilisant NuSOAP. Je comprends que vous pouvez lire un fichier et le transférer sous forme de chaîne, mais cela ne fonctionne pas. Voici un exemple:Transfert fichier us NuSOAP

Client:

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!!!!!"; 
} 

Serveur:

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; 
} 

Voici la partie vraiment étrange. Si je retourne le nom du fichier ou la taille du fichier ou quelque chose comme ça, cela fonctionnera. Il ne retournera pas le fichier lui-même. Aidez-moi, s'il vous plaît.

+0

J'ai modifié la question d'inclure un manque $ de valeur avant et; à partir de la fin de la ligne: $ filePath = value ['file_path'] – SteB

Répondre

0

Dans les getFile côté serveur fonction vous devez return base64_encode($returnData);