|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre régulier
![]() Inscription : septembre 2005 Messages : 114 ![]() |
Bonjour,
je travaille avec XMLRAD 2005 + Delphi + SQL server Actuellement, je cherche simplement à permettre l'upload d'un fichier au travers un formulaire, à enregistrer ce fichier sur le disque, et à insérer le nom de ce fichier dans ma base. Voici ce que j'ai fini par faire, me rendant compte que l'enctype de la balise <form> posait quelques problèmes pour l'enregistrement du nom dans la base (j'avais un enregistrement vide). Code :
si j'enlève de ma fonction le submit de ProcessUpload, j'ai mon fichier uploadé...mais rien dans ma base (un fichier vide). Si je le laisse, j'ai bien mon nom enregistré dans ma base, mais le fichier n'est pas sauvegardé dans son répertoire :-( Une idée? Merci par avance! Johan |
||
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() Inscription : septembre 2005 Messages : 114 ![]() |
J'ai évidemment mis uniquement le code incréminé, et j'ai oublié de fermer ma balise script. mais c'est uniquement dans ce copier/coller, mon code est correct dans le xsl :-)
|
|
|
00
|
|
|
#3 | ||||||
|
Membre régulier
![]() Inscription : septembre 2005 Messages : 114 ![]() |
De la même manière, finalement, si je n'utilise que ce script js :
Code :
Code :
Si je commente cette ligne dans mon script js : Code :
:-( [/code] |
||||||
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Inscription : novembre 2002 Messages : 243 ![]() |
tu peux regarder sur le site xmlrad.com. Tu tapes upload dans le search et c'est 'File Upload with JavaScript'. Il y a du code qui permet de comprendre comment ça fonctionne
|
|
|
00
|
|
|
#5 |
|
Membre éclairé
![]() |
Pour manipuler les fichiers uploadés, il te faut un peu de code. C'est ce que fait XMLC_UploadFile, mais lui ne sait pas écrire dans ta base de données.
Avec ton exemple, tu uploades 2 fois le fichier, ce qui n'est pas correcte. Ce qu'il te faut faire : - Creer un XMLService simple avec juste un XMLGram appelé par exemple UploadFile qui se chargera d'écrire sur disque ton fichier comme tu le désires (repertoire fonction de l'utilisateur, etc...) et de créer l'enregistrement dans la base grace au XMLGram. Les méthodes dont tu as besoin sont : XMLRequest.GetFileCount, XMLRequest.GetFileNo, XMLRequest.GetFileName. Toutes sont expliquées dans le guide du programmeur dans l'aide XMLRAD sur XMRAD.com (training manual, appendixes). La méthode WriteStringToFile de XMLUtils te permettra d'écrire le fichier sur disque, là où tu veux. Le code utilisé par XMLC_UploadFile est lisible dans l'unité XMLUtilsWM.pas fournie.
__________________
Nicolas |
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() Inscription : septembre 2005 Messages : 114 ![]() |
Merci de ta réponse.
Mais ImportFileName est un xmlgram tout simple chargé d'écrire le nom dans la base. Il fonctionne très bien. C'est l'upload qui ne passe pas quand je soumets aussi vers ImportFileName. Bref, si j'ai bien compris, je garde mon smlgram, et j'y ajoute du code permettant d'uploader le fichier, et je ne passe pas par XMLC_UploadFile ? |
|
|
00
|
|
|
#7 | ||
|
Membre régulier
![]() Inscription : septembre 2005 Messages : 114 ![]() |
Bon eh bien je ne m'en sors toujours pas.
J'ai mis comme action XMLC_UploadFile Mon js soumets ce formulaire, puis le soumets en l'envoyant à ImportFileName; Ce xmlgram ImportFileName comporte ceci comme code Delphi : Code :
Le ShowMessage m'affiche bien le nom de mon fichier, mais rien n'est écrit dans mon répertoire d'upload. Ma base, elle, est bien mise à jour. Même si je me contente de soumettre une fois mon formulaire, j'ai le même problème. : soit j'uploade, soit j'écris dans ma base, pas les deux en même temps. :-( |
||
|
|
00
|
|
|
#8 | ||
|
Membre éclairé
![]() |
il ne faut pas poster 2 fois : tu uploades ton fichier 1 seule fois, vers une seule action, qui fait tout. C'est ce que dois faire ton ImportFileName, donc t'es pas tres loin
le XMLRequest.SaveFileNo, c'est niquel : je t'avais parlé de WriteStringToFile, mais c'etait une erreur de ma part. SaveFileNo est la bonne methode. En revanche ton filename est pas correcte : il ne contient pas de repertoire. Code :
__________________
Nicolas |
||
|
|
00
|
|
|
#9 |
|
Membre régulier
![]() Inscription : septembre 2005 Messages : 114 ![]() |
Yep !!
Merci beaucoup pour ton aide Nicolas :-) Tout marche parfaitement bien maintenant. En effet, je n'avais pas compris que je devais préciser le répertoire d'upload, je pensais que les définitions dans les paramètres suffisaient. Tout va bien maintenant. Merci donc à tous les deux pour vos explications et votre patience :-) |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com