A placer dans un champ Upload
//A chaque modification de la liste des fichiers sélectionnés
sFormatAcceptés est une chaîne = gsFormatAutorisé
gnTaille est un entier = Taille(UPL_Upload2)
SI gnTaille > 1000000 ALORS
Info("La taille du fichier dépasse 1.000.000 octets")
SAI_Image = ""
RETOUR
FIN
SAI_Image = UPL_Upload2
SI SAI_Image > "" ALORS
SI AJAXExécute(RenvoieExtension,SAI_Image,sFormatAcceptés) = Faux ALORS
SAI_Image = ""
Info("Les formats autorisés sont : " + sFormatAcceptés)
RETOUR
SINON
IMG_Jauge..Visible = Vrai
UPL_Upload2..Etat = Grisé
UploadLance(UPL_Upload2,SAI_Image)
FIN
SINON
RETOUR
FIN
// Progression du Transfert
sFichier est une chaîne = UploadFichierEnCours(MoiMême)
//Réception des fichiers Uploadés
sNomFichier est une chaîne = UploadNomFichier(MoiMême,Faux,1)
sExtension est une chaîne = fExtraitChemin(sNomFichier,fExtension)
SI ChaîneOccurrence(gsFormatAutorisé,sExtension) = 0 ALORS
Info("Veuillez charger une photo."+RC+"("+gsFormatAutorisé+")")
RETOUR
FIN
// Début
sFichierSource est une chaîne = UPL_Upload2..Valeur // chemin du fichier temporaire sur le serveur
sFichierDest est une chaîne = fRepDonnées() + fExtraitChemin(sFichierSource, fFichier + fExtension)
imgPhoto est une Image
imgPhoto = sFichierSource // charge l'image en mémoire
nPoidsSourceKo est un entier = fTaille(sFichierSource) / 1024
nQualité est un entier
nLargeur est un entier
// 1) Qualité de départ choisie selon le poids d'origine
SELON nPoidsSourceKo
CAS 0 À 100
nQualité = 50
nLargeur = 1024
CAS 100 À 500
nQualité = 30
nLargeur = 768
CAS 501 À 1500
nQualité = 20
nLargeur = 512
CAS > 1500
nQualité = 15
nLargeur = 512
FIN
// 1) Réduire les dimensions (largeur max 1024 px, hauteur proportionnelle)
dRedimensionne(imgPhoto, 512, 0)
// 2) Sauver en JPEG avec une qualité réduite (75 = bon compromis poids/qualité)
SI PAS dSauveImageJPEG(imgPhoto, sFichierDest, nQualité) ALORS
Erreur("Échec de la sauvegarde : " + ErreurInfo())
FIN
// Uploader le fichier dans le répertoire _WEB
sNomFichierCopié est une chaîne = UploadCopieFichier(MoiMême, fRepDonnées(), imgPhoto,1)
IMG_Photo = sFichierDest
HSupprimeTout(TransfertPhoto)
HAjoute(TransfertPhoto)
TransfertPhoto.Nom = sNomFichierCopié
TransfertPhoto.Description = sNomFichierCopié
HAttacheMémo(TransfertPhoto,Image,sFichierDest,hMémoImg)
HModifie(TransfertPhoto)
//supprimer les fichiers temporaires
SI PAS fSupprime(sFichierSource) ALORS
Erreur("Échec de la suppression du fichier source : " + ErreurInfo())
FIN
SI PAS fSupprime(sFichierDest) ALORS
Erreur("Échec de la suppression du fichier destination : " + ErreurInfo())
FIN
IMG_Jauge..Visible = Faux
gbOK = Vrai
Archives par mois : août 2026
Webdev : sortie du programme pour inactivité prolongée
//Dans le code de démarrage du projet
// Stocker la dernière activité de l'utilisateur dans la session WebDev
gdhLastAction est une DateHeure <synchronisé navigateur> = DateHeureSys()
gdhLastActionAlive est une DateHeure <synchronisé navigateur> = DateHeureSys()
gnIterationDéconnexion est un entier <synchronisé navigateur> = 0
SessionPrologue(IAmAlive)
//Procédures Navigateur
PROCÉDURE IsAlive()
gdhLastAction = DateHeureSys()
gnDifférence est un numérique = gdhLastAction - gdhLastActionAlive
SI gnDifférence > 180000 ALORS
gnIterationDéconnexion ++
SI gnIterationDéconnexion <= 2
WaitToast("Session inactive" + RC + "La session va être déconnectée...")
FIN
FIN
SI gnDifférence > 200000
AJAXExécute(AfficheFinProgramme)
FIN
RENVOYER Vrai
PROCÉDURE StartTrackerIsAlive() // à placer à chaque chargement de page
gdhLastActionAlive = DateHeureSys()
Timer(IsAlive,10s)
