Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Bonjour,
Je fais un SaveAs d'une DW afin de la sauver en PDF sur le serveur. Le problème, c'est que ce PDF est
sauvé dans un répertoire temporaire de IIS et est supprimé lorsque l'utilisateur quitte sa session.
J'aimerai que ce PDF soit transféré de manière transparente pour l'utilisateur sur un serveur FTP.
J'ai trouvé sur le site de Sybase Code Exchange un PFC permettant de travailler avec un FTP.
Je réussi à me connecter au FTP via PB, je sais avoir la liste des dossiers, supprimer ou renommer un fichier,
manipuler un répertoire, ...
Par contre, impossible d'uploader le fichier PDF. La commande 'of_putfile( as_source, as_target, ab_ascii)'
me retourne -1. Juste après cette commande, je teste la commande 'of_getlasterror()', celle-ci me renvoie '2'
et la commande 'of_internetgeterrortext( )' ne me renvoie rien du tout.
J'ai testé mon code avec un projet Win, et comme par magie , cela fonctionne
parfaitement. Je soupçonne que le problème vienne du fait que le fichier source
est sauvé dans un répertoire temporaire selon la session.
Avez-vous une idée de la raison pour laquelle cela ne fonctionne pas en Web?
Projet Web réalisé avec PB 11.1 build 8123 sous XP SP 2
Merci à tous.
Dernière modification par quent1 (28-05-2008 12:53:31)
Hors ligne
Bonjour, as-tu essayé en mappant le dossier vituel (ex: c:\temp\doc.pdf) ou/et le dossier réel (ex : <root_www_iis>\<appli_web>\file\session\xxxxxxxxxxxxxxx\c\temp\doc.pdf ) ?
Hors ligne
Au risque de paraître pour un idiot , qu'entends-tu par 'mapper le dossier virtuel'? Je ne vois pas trop
comment faire.
Par contre, après plusieurs tests, je viens de remarquer quelque chose:
Lorsque l'on fait un 'SaveAs', le sytème crée le fichier dans le répertoire virtuel <appli_web\file\.......
en recréant l'arborescence (Si je sauve sur c:\test.pdf, alors, le fichier sera sauvé sur <root_www_iis>\<appli_web>\file\session\xxxxxxxxxxxxxxx\c\test.pdf)
Je pensais donc que lorsque je fesais un 'of_putfile' avec comme source le fichier
en question, le système allait le récupérer dans le répertoire virtuel. Ce n'est pas le cas, mais si je place
le fichier sur le C:\ du serveur alors cela fonctionne car C:\test.pdf existe.
Le problème peut donc être réglé si j'arrive à connaitre la session de l'utilisateur qui est connecté car je
pourrais dès lors reconstruire le chemin complet du fichier ( c:\root_www_iis>\<appli_web>\file\session\xxxxxxxxxxxxxxx\...)
Est-ce qu'il existe une commande PB permettant de récupérer cette session ?
Hors ligne
Problème résolu.
J'ai récupéré la variable SessionID via cette commande
#if defined PBWEBFORM then System.Web.SessionState.HttpSessionState ss ss = System.Web.HttpContext.Current.Session ls_temp = ss.SessionID #end if
Ce qui me permet de reconstruire le chemin complet.
Merci pour ton aide erasorz, cela m'a permis de faire d'autres types de tests auxquels je n'avais pas pensé et
de trouver une autre solution.
Encore merci
Hors ligne
as-tu essayé MapVirtualPath ?
//The following code returns the actual path on a new line in a MultiLineEdit control: #if defined PBWEBFORM then mle_1.text +='~r~nActual Path=' + MapVirtualPath('c:\a.txt') #end if
Hors ligne
Je viens d'essayer et ça fonctionne également.
Je vais utiliser ta solution, elle est meilleure que la mienne. Plus besoin de savoir où est installée l'appli web.
Hors ligne
Pages: 1