|
comment réafficher les fichiers du champ upload |
Started by Amy BEN, Jul., 19 2024 11:34 PM - 3 replies |
| |
| | | |
|
| |
Registered member 97 messages |
|
Posted on July, 19 2024 - 11:34 PM |
Bonjour à tous ;
d'habitude j'utilise windev et windev mobile, et là j'ai une première expérience avec webdev 2024, j'ai utiliser le champ upload pour sauvegarder les documents d'une entreprise en pièce jointe, et j'ai crée une table dans ma base pour : idfichier, nom, chemin, identreprise - et là juque là tout est Ok je télécharge les fichiers et le tableau se remplit (la table mémoire est en mode navigateur sinon ça ne se remplis pas) et le soucis, c'est que maintenant quand je veux enregistrer la table mémoire dans ma base je ne peux pas, car le code d'enregistrement est en mode serveur !
bref je galère et ça me bloque, si quelqu'un peut m'expliquer comment je peux faire ça, de façon à ce que quand je clique sur le bouton dans la ligne de l'entreprise je peux revoir les pièces jointes uploadé.
cordialement ; merci beaucoup d'avance. |
| |
| |
| | | |
|
| | |
| |
Registered member 97 messages |
|
Posted on July, 20 2024 - 2:45 AM |
Up Up Up |
| |
| |
| | | |
|
| | |
| |
Posted on July, 22 2024 - 8:56 AM |
Après mûre réflexion, Amy BEN a écrit :
Bonjour à tous ;
d'habitude j'utilise windev et windev mobile, et là j'ai une première expérience avec webdev 2024, j'ai utiliser le champ upload pour sauvegarder les documents d'une entreprise en pièce jointe, et j'ai crée une table dans ma base pour : idfichier, nom, chemin, identreprise - et là juque là tout est Ok je télécharge les fichiers et le tableau se remplit (la table mémoire est en mode navigateur sinon ça ne se remplis pas) et le soucis, c'est que maintenant quand je veux enregistrer la table mémoire dans ma base je ne peux pas, car le code d'enregistrement est en mode serveur !
bref je galère et ça me bloque, si quelqu'un peut m'expliquer comment je peux faire ça, de façon à ce que quand je clique sur le bouton dans la ligne de l'entreprise je peux revoir les pièces jointes uploadé.
cordialement ; merci beaucoup d'avance.
Bonjour je suppose que tu parles du champs multi upload; celui qui permet de télécharger plusieurs fichiers et faire du glisser déposer ? Je l'ai toujours trouvé d'un mode de fonctionnement obscur et la plupart du temps j'utilise l'ancien (mono fichier) car la plupart du temps c'est un seul fichier que l'on attend. Donc je vais plonger dans les qq exemples que je dois avoir.
Donc 1ère bizarrerie, c'est dans le bouton Ajouter un fichier que le boulot serveur principal se fait. et non pas dans le Envoyer au serveur. Dans le bouton Envoyer au serveur, on a effectivement du code Nav pour executer le btn_addfile avec la fn Uploadlance
<code> // Evite de traiter une liste vide SI ZR_Fichiers..Vide ALORS RETOUR FIN
// Masquage du bouton de suppression de chaque fichier POUR TOUTE LIGNE DE ZR_Fichiers ATT_Suppr = Faux
FIN SI Lib_Nombrefichier <> SAI_FICHIERMAX ALORS UploadLance(BTN_ADDFILE) SINON ToastAffiche("nombre maximum de fichier atteint") FIN
</code>
et un code de ce btn_addfile (je te laisse enlever mes codes spécifiques de ça)
(rmq : mon système est dans une popup) <code> // Insérer ici le code de traitement des fichiers uploadés // Exemple de code : // Copie le fichier uploadé dans un répertoire spécifique calcul est un entier
nomfichier,wchemin est une chaîne taillefic est un entier wchemin=ComplèteRep(CurrentRep)
SI PAS fRépertoireExiste(wchemin) ALORS fRepCrée(wchemin)
SI ZR_FICHIERUPLOADE.Occurrence() = nombredefichiermax ALORS ToastAffiche("nombre maximum de fichier atteint") RETOUR SINON SI ZR_FICHIERUPLOADE.Occurrence(toTotal) <> nombredefichiermax ET MoiMême.Occurrence > 0 ET ZR_FICHIERUPLOADE.Occurrence() > 0 ALORS calcul = nombredefichiermax-ZR_FICHIERUPLOADE.Occurrence(toTotal) SI calcul > MoiMême.Occurrence ALORS calcul = MoiMême.Occurrence FIN SI calcul = 1 ALORS ToastAffiche(calcul+ " fichier a été ajouté -- La limite est de "+nombredefichiermax) SINON ToastAffiche(calcul+ " fichiers ont été ajoutés -- La limite est de "+nombredefichiermax) FIN
SINON calcul = MoiMême.Occurrence FIN
POUR i = 1 _À_ calcul //nomfichier = UploadNomFichier(moimeme,faux) nomfichier=UploadCopieFichier(MoiMême, wchemin, "", i) ZoneRépétéeAjouteLigne(ZR_FICHIERUPLOADE,nomfichier) ZR_FICHIERUPLOADE..Visible = Vrai Gr_LIBNOMBRE..Visible = Vrai
FIN Lib_Nombrefichier = ZR_FICHIERUPLOADE.Occurrence(toTotal)
SELON Val(Lib_Nombrefichier..Valeur) CAS 0 LIB_IMAGE = "élément"
CAS > 1 LIB_IMAGE = "éléments" AUTRE CAS LIB_IMAGE = "élément" FIN cmd est une chaîne wch est une chaîne CODE_RATT est une chaîne wUrlRelative,wrepRelatif est une chaîne wext est une chaîne wfils est un entier // id du passager SI Position(CurrentRep,"\RESSOURCES")>0 ALORS CODE_RATT = "RESSOURCE" wfils = 0 SINON // je suis dans un rep passager; donc je dois récupérer son id attendu que les rep sont PASSAGER_123456 CODE_RATT = "PASSAGER" wch = ExtraitChaîne(CurrentRep,2,"PASSAGER_") // est ce la fin du rep ou dedans ? SI Position(wch,"\")>0 ALORS wch=ExtraitChaîne(wch,1,"\") // y'en a derrière, donc je l'enlève wfils=Val(wch) //là il ne doit plus me rester que le n° FIN wrepRelatif = ExtraitChaîne(CurrentRep,2,repDwnload) // ne garde que la partie relative wrepRelatif=ComplèteRep(wrepRelatif) wrepRelatif = Remplace(wrepRelatif,"\","/")
POUR TOUTE LIGNE DE ZR_FICHIERUPLOADE // on crée la fiche nomfic est une chaîne=ZR_FICHIERUPLOADE.aNomFichier_ics wext=fExtraitChemin(nomfichier,fExtension) wUrlRelative=wrepRelatif+nomfic PDO_TITRE = "document "+nomfic cmd = "insert into people_document (pdo_where,pdo_datetime,ope_id,pdo_author,pdo_code_ratt,ppl_id,ppl_id_fils,pdo_fichier,pdo_wfile,pdo_titre,pdo_ext) values('INTERNAL',sysdate(),"+gOpe_Id+"," cmd+=QuoteV(gInternaute) // pdo_author, cmd+=QuoteV(CODE_RATT) // pdo_code_ratt, cmd+=sessionstru.PPL_ID_COACH+","+wfils+"," // ppl_id,ppl_id_fils, cmd+=Quote(nomfic)+","+Quote(wUrlRelative)+"," // pdo_fichier,pdo_wfile cmd+=Quote(PDO_TITRE)+"," cmd+=Quote(wext)+")" ExecInsert(cmd) FIN
LoadRep() PopupFerme() // je referme ma popup
</code>
comme tu le vois dans la partie de lecture de la ZR, je mémorise les noms des fichiers que je viens de transférer dans une base (sql notif sur mysql mais tu transposeras)
Je ne te redonne pas les codes navigateur de ce btn envoyer, à priori ils ne bougent pas par rapport à ce que donne l'assistant |
| |
| |
| | | |
|
| | |
| |
Registered member 97 messages |
|
Posted on July, 25 2024 - 3:31 AM |
Roumegou a écrit :
Après mûre réflexion, Amy BEN a écrit : Bonjour à tous ;
d'habitude j'utilise windev et windev mobile, et là j'ai une première expérience avec webdev 2024, j'ai utiliser le champ upload pour sauvegarder les documents d'une entreprise en pièce jointe, et j'ai crée une table dans ma base pour : idfichier, nom, chemin, identreprise - et là juque là tout est Ok je télécharge les fichiers et le tableau se remplit (la table mémoire est en mode navigateur sinon ça ne se remplis pas) et le soucis, c'est que maintenant quand je veux enregistrer la table mémoire dans ma base je ne peux pas, car le code d'enregistrement est en mode serveur !
bref je galère et ça me bloque, si quelqu'un peut m'expliquer comment je peux faire ça, de façon à ce que quand je clique sur le bouton dans la ligne de l'entreprise je peux revoir les pièces jointes uploadé.
cordialement ; merci beaucoup d'avance.
Bonjour je suppose que tu parles du champs multi upload; celui qui permet de télécharger plusieurs fichiers et faire du glisser déposer ? Je l'ai toujours trouvé d'un mode de fonctionnement obscur et la plupart du temps j'utilise l'ancien (mono fichier) car la plupart du temps c'est un seul fichier que l'on attend. Donc je vais plonger dans les qq exemples que je dois avoir.
Donc 1ère bizarrerie, c'est dans le bouton Ajouter un fichier que le boulot serveur principal se fait. et non pas dans le Envoyer au serveur. Dans le bouton Envoyer au serveur, on a effectivement du code Nav pour executer le btn_addfile avec la fn Uploadlance
<code> // Evite de traiter une liste vide SI ZR_Fichiers..Vide ALORS RETOUR FIN
// Masquage du bouton de suppression de chaque fichier POUR TOUTE LIGNE DE ZR_Fichiers ATT_Suppr = Faux
FIN SI Lib_Nombrefichier <> SAI_FICHIERMAX ALORS UploadLance(BTN_ADDFILE) SINON ToastAffiche("nombre maximum de fichier atteint") FIN
</code>
et un code de ce btn_addfile (je te laisse enlever mes codes spécifiques de ça)
(rmq : mon système est dans une popup) <code> // Insérer ici le code de traitement des fichiers uploadés // Exemple de code : // Copie le fichier uploadé dans un répertoire spécifique calcul est un entier
nomfichier,wchemin est une chaîne taillefic est un entier wchemin=ComplèteRep(CurrentRep)
SI PAS fRépertoireExiste(wchemin) ALORS fRepCrée(wchemin)
SI ZR_FICHIERUPLOADE.Occurrence() = nombredefichiermax ALORS ToastAffiche("nombre maximum de fichier atteint") RETOUR SINON SI ZR_FICHIERUPLOADE.Occurrence(toTotal) <> nombredefichiermax ET MoiMême.Occurrence > 0 ET ZR_FICHIERUPLOADE.Occurrence() > 0 ALORS calcul = nombredefichiermax-ZR_FICHIERUPLOADE.Occurrence(toTotal) SI calcul > MoiMême.Occurrence ALORS calcul = MoiMême.Occurrence FIN SI calcul = 1 ALORS ToastAffiche(calcul+ " fichier a été ajouté -- La limite est de "+nombredefichiermax) SINON ToastAffiche(calcul+ " fichiers ont été ajoutés -- La limite est de "+nombredefichiermax) FIN
SINON calcul = MoiMême.Occurrence FIN
POUR i = 1 _À_ calcul //nomfichier = UploadNomFichier(moimeme,faux) nomfichier=UploadCopieFichier(MoiMême, wchemin, "", i) ZoneRépétéeAjouteLigne(ZR_FICHIERUPLOADE,nomfichier) ZR_FICHIERUPLOADE..Visible = Vrai Gr_LIBNOMBRE..Visible = Vrai
FIN Lib_Nombrefichier = ZR_FICHIERUPLOADE.Occurrence(toTotal)
SELON Val(Lib_Nombrefichier..Valeur) CAS 0 LIB_IMAGE = "élément"
CAS > 1 LIB_IMAGE = "éléments" AUTRE CAS LIB_IMAGE = "élément" FIN cmd est une chaîne wch est une chaîne CODE_RATT est une chaîne wUrlRelative,wrepRelatif est une chaîne wext est une chaîne wfils est un entier // id du passager SI Position(CurrentRep,"\RESSOURCES")>0 ALORS CODE_RATT = "RESSOURCE" wfils = 0 SINON // je suis dans un rep passager; donc je dois récupérer son id attendu que les rep sont PASSAGER_123456 CODE_RATT = "PASSAGER" wch = ExtraitChaîne(CurrentRep,2,"PASSAGER_") // est ce la fin du rep ou dedans ? SI Position(wch,"\")>0 ALORS wch=ExtraitChaîne(wch,1,"\") // y'en a derrière, donc je l'enlève wfils=Val(wch) //là il ne doit plus me rester que le n° FIN wrepRelatif = ExtraitChaîne(CurrentRep,2,repDwnload) // ne garde que la partie relative wrepRelatif=ComplèteRep(wrepRelatif) wrepRelatif = Remplace(wrepRelatif,"\","/")
POUR TOUTE LIGNE DE ZR_FICHIERUPLOADE // on crée la fiche nomfic est une chaîne=ZR_FICHIERUPLOADE.aNomFichier_ics wext=fExtraitChemin(nomfichier,fExtension) wUrlRelative=wrepRelatif+nomfic PDO_TITRE = "document "+nomfic cmd = "insert into people_document (pdo_where,pdo_datetime,ope_id,pdo_author,pdo_code_ratt,ppl_id,ppl_id_fils,pdo_fichier,pdo_wfile,pdo_titre,pdo_ext) values('INTERNAL',sysdate(),"+gOpe_Id+"," cmd+=QuoteV(gInternaute) // pdo_author, cmd+=QuoteV(CODE_RATT) // pdo_code_ratt, cmd+=sessionstru.PPL_ID_COACH+","+wfils+"," // ppl_id,ppl_id_fils, cmd+=Quote(nomfic)+","+Quote(wUrlRelative)+"," // pdo_fichier,pdo_wfile cmd+=Quote(PDO_TITRE)+"," cmd+=Quote(wext)+")" ExecInsert(cmd) FIN
LoadRep() PopupFerme() // je referme ma popup
</code>
comme tu le vois dans la partie de lecture de la ZR, je mémorise les noms des fichiers que je viens de transférer dans une base (sql notif sur mysql mais tu transposeras)
Je ne te redonne pas les codes navigateur de ce btn envoyer, à priori ils ne bougent pas par rapport à ce que donne l'assistant
Bonjour Romegou
merci beaucoup pour ta réponse, je vais tester et revenir vers toi, c'est vrai que le champ est assez obscure
bien cordialement |
| |
| |
| | | |
|
| | | | |
| | |
|