Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Outils > XMLRAD
XMLRAD Environnement de développement Web XML/XSL. Avant de poster -> F.A.Q XMLRAD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/02/2006, 12h02   #1
Membre à l'essai
 
Inscription : mars 2003
Messages : 77
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 77
Points : 23
Points : 23
Par défaut changement de nom de fichier en Upload

Sur mon xmlService UploadForm, l'utilisateur sélectionne son fichier, quand il fait executer, xmlrad va bien me faire le upload dans data\upload .
Mon souci et que je peut avoir des utilisateurs ayant le fichier de même nom. donc l'idée serait de préfixer le fichier téléchargé par un id (à quoi sert le XMLC_RequestID) et comment faire pour que XMLRAD change le nom du fichier de destination (XMLC_RequestID+file).

Si on veut créer une arborescence dans upload, je penses qu'il faut modifier XMLC_FileUploadDir, mais en le modifiant, il me stocke les fichiers dans upload, que le repertoire existe ou n'existe pas .
JMLD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2006, 12h32   #2
Membre confirmé
 
Avatar de Jeweller
 
Inscription : août 2003
Messages : 354
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 354
Points : 226
Points : 226
Une solution possible est de le faire manuellement en utilisant par exemple SystemMoveFile pour renommer/déplacer le fichier apres avoir extrait son nom initial depuis
Context.GetValue('XMLC_UploadedFileName').

Michael
Jeweller est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2006, 13h23   #3
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
dans les InitParams (section XMLUtils) tu as XMLC_FileUploadCreateUserDir
qui permet de créer un répertoire par XMLC_UserID

http://xmlrad.com/DelosBin/Delos.dll/ServePage?URL=Manual/Appendix14/index.htm&WEB_ID=101001015
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2006, 14h32   #4
Membre à l'essai
 
Inscription : mars 2003
Messages : 77
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 77
Points : 23
Points : 23
le XMLC_FileUploadCreateUserDir ne m'intéresse pas car je ne veux pas stocker les fichier par user, mais plutot nommer mes fichiers par Id unique qui correspond à mon id d'enregistrement correspondant dans ma base de données.
dans ma base j'ai l'enregistrement 102 avec la synthèse de l'enquête et dans mon fichier N°102, j'ai le détail de l'enquête.

Par contre Jeweller, ta méthode m'intéresse, mais n'y a t il pas une méthode permettant au serveur d'enregistrer le fichier au nom que l'on veux
JMLD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2006, 14h54   #5
Membre éclairé
 
Inscription : janvier 2003
Messages : 284
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 284
Points : 311
Points : 311
Envoyer un message via MSN à Nicolas.Cogi
Je pense qu'il faut que tu fasses l'enregistrement du fichier toi-meme pour avoir parfaite maitrise sur ce que tu veux faire.

Inspire toi du code de XMLC_UploadFile dans l'unité XMLUtilsWM.pas, copie-colle le code dans un nouveau service et modifie-le.

La méthode qui t'interesse en l'occurence est XMLRequest.SaveFileNo(), comme le disait Jeweller.
__________________
Nicolas
Nicolas.Cogi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2006, 16h00   #6
Membre confirmé
 
Avatar de Jeweller
 
Inscription : août 2003
Messages : 354
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 354
Points : 226
Points : 226
Si tu utilises le service du framework XMLC_UploadFile (avec la cholie barre de progession et tout et tout, wouaa... ) tu positionnes donc dans le nextAction ton xmlservice de retour. Dans un evenement de celui-ci (beforeservice par exemple) tu peux alors faire un truc du genre:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
  if Context.GetValue('XMLC_UploadedFileName') <> '' then
  begin 
     val := Context.GetValue('XMLC_UploadedFileName');
     f := ExtractFileName(val); //un truc à ta sauce
     valht := ConCatDir( "un truc à ta sauce aussi ;)" ,false);
 
     if not SystemMoveFile(val,valht+f,false,false) then
     begin
       SystemDeleteFile(val,false);
       XMLRequest.RaiseError('ERR_BIDULE','blabla'+SysErrorMessage(GetLastError));
     end;
  end;
Et ca devrait faire l'affaire.
Si tu n'utilises pas XMLC_UploadFile, dans ce cas tourne toi vers XMLRequest.SaveFileNo.

Michael
Jeweller est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2006, 16h52   #7
Membre à l'essai
 
Inscription : mars 2003
Messages : 77
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 77
Points : 23
Points : 23
Voici le code que j'ai mis dans mon xmlservice INSERT et dans l'évènement AfterXMLGRAM
Dans file, c'est le nom du fichier sélectionné dans mon formulaire de saisie
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
   if XMLApplication.InitParams.Values['XMLC_AllowFileUpload'] <> '1' then
     XMLRequest.RaiseError('ERR_FILE_UPLOAD_NOT_ALLOWED', ClassName+'.XMLC_UploadFile');
 
   if context.Values['file'] = '' then
     begin
       if XMLC_TraceInfo then EventLog.TraceInfo(XMLRequest, ClassName, 'XMLC_UploadFile - Pas de fichier à télécharger');
       Exit;
     end;
 
   UploadDir := XMLApplication.InitParams.Values['XMLC_FileUploadDir'];
   if UploadDir = '' then
     UploadDir := 'Upload';
   UploadDir := ConcatDir(XMLApplication.InitParams.Values['XMLC_DefaultDataDir'], UploadDir, True);
 
   filename := context.Values['CA_ID']+ '_' + ExtractFileName( context.Values['file']);
   context.Values['CA_FILENAME']:= filename;
   FileName := ConcatDir(UploadDir, FileName, False);
   if FileExists(FileName) then
       XMLRequest.RaiseError('ERR_UPLOADED_FILE_ALREADY_EXISTS', ClassName+'.XMLC_UploadFile - FileName[''+FileName+'']');
       if XMLC_TraceInfo then EventLog.TraceInfo(XMLRequest, ClassName, 'XMLC_UploadFile - ' + context.Values['file'] + ' dest : ' + filename);
     WriteStringToFile(context.Values['file'], FileName, False);
avec cela ça marche.
Merci pour votre Aide.
JMLD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2006, 16h57   #8
Membre à l'essai
 
Inscription : mars 2003
Messages : 77
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 77
Points : 23
Points : 23
En fait j'ai posé 2 questions sur ce forum et mon code reprend aussi la reponse à la question INSERT et UPLOAD
JMLD est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h28.


 
 
 
 
Partenaires

Hébergement Web