PHP,SOAP,WSDL

Résolu/Fermé
jsaispas Messages postés 118 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 24 août 2009 - 6 août 2009 à 14:50
razul Messages postés 14 Date d'inscription jeudi 21 juin 2012 Statut Membre Dernière intervention 29 décembre 2013 - 27 juin 2012 à 12:24
Bonjour,

je cherche à faire un web service qui va envoyer des fichiers. J'ai donc un fichier .wsdl, et un fichier serveur.php sur un serveur distant, un fichier client.php avec un input file.
En local c'est pas dur à faire, vu que le fichier est sur le même pc, mais en distant il m'est impossible de passer le chemin du fichier en paramètre vu qu'il se trouve sur le client et non sur le serveur.
Je cherche un moyen d'envoyer des fichier de type (doc, pdf..) mais je ne sais pas comment faire.

si qqn sait comment faire avec des exemples des fichiers ça m'aiderait beaucoup. Merci
A voir également:

13 réponses

Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
6 août 2009 à 15:19
Salut,
tu veux en fait si j'ai bien compris transférer un fichier d'un serveur à un autre c'est ça ?
0
jsaispas Messages postés 118 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 24 août 2009 69
6 août 2009 à 15:24
en fait c'est un web service qui pourra etre mis sur n'importe quel site web.

genre tu mets sur ton site le client soap et ça envoie le fichier sur le serveur et ça l'enregistre... Autant le client/serveur soap marche bien mais passer des fichiers je trouve pas d'exemple ou de tuto sur le net
0
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
6 août 2009 à 15:26
Autant le client/serveur soap marche bien mais passer des fichiers je trouve pas d'exemple ou de tuto sur le net

Merci mais j'ai bien compris et je sais ce qu'est un webservice en SOAP.

Par contre tu dis bien que ton problème c'est un transfert de fichier non ou je comprend rien à ce que t'écris ?
0
jsaispas Messages postés 118 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 24 août 2009 69
6 août 2009 à 15:30
ouai c'est un transfert de fichier.
mon but c'est avec qq chose comme ça :

$fichier = $_FILES['fichier'];
$response = $client->__soapCall('envoie',array('fichier'=> $fichier));

avec ma méthode envoie($fichier) sur le serveur je récupère ce fichier pour l'enregistrer
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
6 août 2009 à 15:37
Oki c'est donc un tranfert de fichier:)
Pour moi il faut que tu coté client qui reçoit $_FILES à travers un formulaire, il faut stocker le fichier dans un répertoire temporaire, puis ensuite tu ouvres une connection ftp vers le serveur principal et tu transfert le fichier via FTP : https://www.php.net/manual/fr/book.ftp.php , puis tu supprimes le fichier dans le repertoire temporaire si ça a réussi sinon t'avises :)

Voilà moi c'est comme ça que je conçois le problème.
0
C'est plus vraiment du WS alors. :)
0
jsaispas Messages postés 118 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 24 août 2009 69
6 août 2009 à 15:50
ouai voila, il me faut du WS, puis je peux pas souiller les pc clients en stockant d'abord le fichier chez eux.
Je sais que c'est possible en silverlight + php y a moyen avec de l'encodage en base 64 et pour juste php ça existe aussi. j'arrive à encoder le bordel mais le décoder et le save non...
0
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
6 août 2009 à 16:18
je peux pas souiller les pc clients en stockant d'abord le fichier chez eux.
? ? ?
Heuu moi je parle de communication de serveur à serveur y a pas de poste client, puis forcer un client...

Je comprends pas tout la, mais toi t'as l'air donc bon courage :)

P.S : silverlight beurk, Flex ouaiis :)
0
jsaispas Messages postés 118 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 24 août 2009 69
6 août 2009 à 16:36
en fait ce sera mis sur des sites web (c'est eux que j'appelle client). J'ai peut être trouvé un moyen mais il me manque qq chose. J'aimerais lire le contenu d'un $_files pour faire qq chose comme ça :

$fichier = $_FILES['fichier'];

$fcontent = fread ($fichier['contenu'], filesize($cv));

$cv64 = base64_encode($fcontent);

sauf que la bien sur ça marche pas, fread lit des fichiers ouvert mais tout est distant c'est pas possible
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
7 août 2009 à 11:11
Bonjour,

Je peux t'aider sur la conception de la chose d'un point de vue théorique mais pas concrète.
J'ai déjà fait des webservices avec échange de fichier dans les requêtes SOAP en Java, mais pas en PHP.

Cela dit le principe doit être le même, deux cas :
1) Envoi de client à serveur :
- Le client lit le fichier, récupère le contenu, envoi sous forme de DataHandler le contenu du fichier dans la requète SOAP directement.
- Le serveur réceptionne la requête SOAP, regarde s'il y a des choses dans les "attachments", si oui récupère le contenu et... la suite c'est selon ce que doit faire ton web service, le mieux se contentait de stocker le fichier reçus, donc enregistrement sur fichier coté serveur.

2) Envoi du serveur au client :
- Exactement la même chose mais coté serveur.

Conclusion, de n'importe quel coté, il faut d'abord lire le fichier, récupérer son contenu et l'envoyé en tant qu'attachement à ta requète SOAP.

Normalement le fait d'inclure des attachements à ta requète SOAP n'impacte en rien ton WSDL. (Du moins en Java, mais j'imagine que c'est géré de la même manière pour le PHP puisque SOAP est comme un composant / une technologie indépendante du langage qui l'utilise).

Reste donc à trouver de la doc PHP sur comment ajouter des attachements à une requête SOAP en PHP.
Si je trouve je te fais signe.
0
jsaispas Messages postés 118 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 24 août 2009 69
10 août 2009 à 11:29
c'est bon en fait j'ai résolu mon problème vendredi déjà.

j'ai juste fait un truc que j'aime pas faire, j'ai upload le fichier sur le client (personne avec le soap-client) je l'ouvre je le lis, j'envoi les données en base64, et coté serveur je réceptionne, je créer un fichier vide puis j'insère les données et bien entendu je supprime le fichier de chez le client. Je peux passer tout type de format sans soucis.

faut juste pensé à mettre
<wsdl:part name="file_content" type="xsd:base64Binary" />

dans le wsdl pour qu'il sache que le paramètre contienne ça.
0
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
11 août 2009 à 18:00
On y vient finalement au stockage temporaire de la photo sur le serveur client... ;)
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
10 août 2009 à 11:32
Effectivement c'est une solution.

Juste une petite remarque sur "<wsdl:part name="file_content" type="xsd:base64Binary" />"

C'est utile surtout lorsque tu souhaites passer des fichiers binaires. Pour ce qui est de fichiers texte ou xml par exemple, tu n'en as pas besoin. Tout dépends aussi de la manière dont tu lis les informations de ton fichier pour les transmettre en paramètre, si tu les lis en binaires et non en texte, effectivement tu as tout intérêt à indiquer la ligne que tu as ajouté.
0
razul Messages postés 14 Date d'inscription jeudi 21 juin 2012 Statut Membre Dernière intervention 29 décembre 2013 1
27 juin 2012 à 12:24
0