Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# [Résolu] Envoi de fichiers via SOAP ...

Envoyé par : AurelBUD

Date : 22/12/2005 14:52

Bonjour, pour envoyer mes messages vers mon serveur j'utilise la fonction suivante :

function ExecuteSOAP(methode, parametres)
{
//Creation d'un objet SOAPCall
var appel = new SOAPCall();
//Fonction de gestion web service
appel.transportURI = "http://192.168.1.2/clients/SOAP.php";
//Arguments du webservice
var params = new Array();
var i = 0;
for (a in parametres)
	params[i++] = new SOAPParameter(parametres[a], a);
//Creation d'un message SOAP
appel.encode(0,methode,null,0,null,params.length,params);
//On autorise l'acces au serveur
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
//On appele la fonction
var result = appel.invoke();
if (result.fault)
{ //nsISoapFault
	alert("Erreur SOAP : "+result.fault.faultCode+" ; "+result.fault.faultString+"\n");
	//ajouterErreur(gStringBundle.getFormattedString("erreurSoap", new Array(String(result.fault.faultCode), String(result.fault.faultString))));
	return null;
}
else
{
	//On traite le resultat
	var num = new Object();
	var r = result.getParameters(false,num);
	if(r[0] == null) return null;
	return r[0].value;
}
}

Et je voulais savoir ce qu'il fallait que je modifie pour pouvoir passer un fichier en parametre.

Merci d'avance pour vos réponses

# Re: Envoi de fichiers via SOAP ...

Envoyé par : jonathan

Date : 25/12/2005 22:14

Le plus simple à mon avis est d'encoder ton fichier en base64, parfaitement adapté à l'envoi de fichiers en mode texte (comme au milieu du XML). Récupère le contenu du fichier grâce à un composant XPCOM (utilise la JSLib pour aller vite ou si tu as la conscience professionnelle, chercher sur la Knowledge Base de Mozillazine, il y a des exemples de code), encode le via btoa (binary to ascii), et envoie comme simple chaîne de caractères. Côté PHP, tu pourras très simplement décoder le tout avec base64_decode et file_put_contents. Voilà il y a certainement d'autres méthodes mais celle-ci me paraît la plus simple :-).

# Re: Envoi de fichiers via SOAP ...

Envoyé par : AurelBUD

Date : 16/01/2006 15:09

Je n'arrive pas à trouver dans la JSLib la fonction qui récupère le contenu du fichier. Peux tu me donner plus de détails sur ces fonctions ??? Merci d'avance

# Re: Envoi de fichiers via SOAP ...

Envoyé par : AurelBUD

Date : 16/01/2006 18:09

pour ouvrir une boite de dialogue de fichier, j'utilise :

var nsIFilePicker = Components.interfaces.nsIFilePicker;
var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
fp.init(window, "Sélectionner un fichier", nsIFilePicker.modeOpen);
var res = fp.show();
if (res == nsIFilePicker.returnOK)
{
img_src = fp.file.target;
}

Est-ce que avec "fp.file" on peut obtenir le contenu du fichier sous forme d'une string ? Y'a-t-il une fonction associée à ce fp.file ? Pour pouvoir l'envoyer via SOAP après ...

# Re: Envoi de fichiers via SOAP ...

Envoyé par : AurelBUD

Date : 18/01/2006 12:42

C'est bon j'ai trouvé !!! Je donne le code pour lire un fichier binaire si ça peut interesser des gens :

function read(filepath) {
try  {
 //On autorise le navigateur a ouvrir des fichiers locaux
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch (e) {
	alert("Permission to read file was denied.");
}
//On ouvre le fichier
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(filepath);
if ( file.exists() == false ) {
	alert("File does not exist");
}
var is = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance( Components.interfaces.nsIFileInputStream );
is.init( file,0x01, 00004, null);
//On lit le fichier en mode binaire
var sis = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);
sis.setInputStream( is );
var output = sis.readBytes( sis.available() );
//On retourne le contenu du fichier
return output;
}

# Re: [Résolu] Envoi de fichiers via SOAP ...

Envoyé par : chBok

Date : 18/01/2006 23:04

Merci, voilà un bout de code qui va sûrement se retrouver dans la section du wiki des exemples :) - merci

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.