|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
ASP - Redimensionner Image + Picto après Upload
Information sur le tutorial
Description
But : Proposer aux visiteurs de charger des images sans se soucier du "poids" de l'image, puisqu'on va les redimensionner (et créer des pictos a la volée) pour s'adapter aux dimensions d'affichage final sur notre site. En effet, les visiteurs peuvent très bien charger des images "haute résolution", très gourmandes en "temps de chargement" et en espace disque.
Intérêts : 1- adapter après "upload" la taille des images à nos besoins (gain de temps de chargement et d'espace disque). 2- créer des images de prévisualisation (pictos) à la volée.
Principe : 1- on propose au visiteur de mettre une image sur le site, sans contrainte (images .jpg, .jpeg, .bmp, .png ou .gif) 2- le programme s'occupe de vérifier les dimensions de l'image "uploadée", et les adapte automatiquement. 3- on crée aussi automatiquement un picto. 4- les photos et pictos sont enregistrées dans un dossier 5- leurs noms sont enregistrés dans une base de données, avec un commentaire (légende, par exemple)
Tutorial
Mon tutorial original se trouve ici : http://www.asp-php.net/tutorial/asp-php/asp-redim-image-upload.php
On a donc besoin : 1- d'une base de données Microsoft Office Access (MABASE), dans laquelle est créée une table (MATABLE) contenant au moins les champs suivants : - NUM (NumeroAuto : clé primaire) - COMMENT1 (Texte) - PHOTO1 (Texte) - PICTO1 (Texte) 2- d'un dossier déprotégé (photosMATABLE) (avec les "droits en écriture"). Les fichiers :1- _connexion.asp : contient les paramètres de connexion à votre base 2- MONFICHIER_LISTE.asp : liste avec options AJOUTER - MODIFIER - SUPPRIMER 3- MONFICHIER_FORM.asp : affiche le formulaire en fonction des 3 options 4- MONFICHIER_TRAITER.asp : traite les 3 options (options AJOUTER - MODIFIER) : - traite l'image "uploadée", crée le picto, ajoute les données à la table MATABLE, - gère les erreurs, - redimensionne les photo et picto si nécessaire, - et enregistre les photo et picto dans le dossier photosMATABLE. (option SUPPRIMER) : - supprime la fiche concernée de la table MATABLE, - supprime les photo et picto concernées du dossier photosMATABLE. Important : Il faut que les COMPOSANTS ASP suivants soient installés : 1- aspSmartUpload ( gratuit) : pour Uploader le formulaire http://www.aspfr.com/tutoriaux/ASPSMARTUPLOAD-MODE-EMPLOI_847.aspx2- AspImage ( payant) : pour redimensionner puis sauvegarder les images modifiées. http://www.serverobjects.com/comp/Aspimage.htmPS : AspImage ne gère pas le redimensionnement des GIF. Mais d'autres composants (payants aussi) le font. | | _connexion.asp | <% ' le dossier DOSSIERBASE doit être déprotégé (avec les "droits en écriture"). ' Path long de la base de données dbPath = Server.MapPath("DOSSIERBASE /MABASE.mdb") ' Création de l'objet permettant la connexion Set Conn = Server.CreateObject("ADODB.Connection") ' Connexion Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};" _ & " DBQ=" & dbPath %> | MONFICHIER_LISTE.asp dans cet exemple : - on affiche en ligne les pictos des photos présentes dans la table de la base de données, - avec pour chacune des boutons "Modifier" et "Supprimer" - et un bouton "Ajouter Nouveau"
| <!-- #include file="_Connexion.asp"--> <% ' -------------------------------------------------------------------- ' Les photos seront stockees dans un dossier photosMATABLE ' on a une base de donnees MABASE avec une table MATABLE ' La table doit contenir au moins les champs suivants : ' - NUM (NuméroAuto - CLE primaire) ' - COMMENT1 (Texte) ' - PHOTO1 (Texte) ' - PICTO1 (Texte) ' Important : conserver le champ COMMENT1 : ' il est necessaire en mode AJOUTER ' REMARQUE : on peut utiliser ce fichier pour PLUSIEURS TABLES (de meme structure) ' preciser le nom de la table a l'appel du fichier : MONFICHIER.asp?CAT=MATABLE ' -------------------------------------------------------------------- ' mettre le nom de la table dans une variable : table = "MATABLE" ' ou : table=request.querystring("CAT") ' -------------------------------------------------------------------- ' Répertoire des photos et pictos photosMATABLE (déprotégé) cheminlong = Server.MapPath(".\photosMATABLE") & "\" chemincourt = "photosMATABLE/" ' -------------------------------------------------------------------- ' Sélection de toutes les fiches de MATABLE URL = Request.ServerVariables("SCRIPT_NAME") SQL = "SELECT * FROM " & table & " ORDER BY NUM DESC;" Set RS = server.createobject("ADODB.Recordset") RS.Open SQL,Conn , 3, 3 %> <html><head><title></title></head> <body><div align="center"> <table> <tr> <td><%=table%></td> <td><a href="MONFICHIER_FORM.asp?CAT=<%=table%>&TRAITER=AJOUTER"> AJOUTER NOUVEAU</a></td> </tr> <tr> <td colspan="2"> <table> <tr> <% ' tant qu'il y a des fiches while not RS.eof %> <td> <table> <tr> <td> <a href="MONFICHIER_FORM.asp?CAT=<%=table%>&TRAITER=MODIFIER &NUM=<%=RS.fields("NUM")%>"> MODIFIER</a> </td> <td> <a href="MONFICHIER_FORM.asp?CAT=<%=table%>&TRAITER=SUPPRIMER &NUM=<%=RS.fields("NUM")%>"> Supprimer</a> </td> </tr> <tr> <td colspan="2"> <% if RS.fields("PICTO1")<> "" then %> <img border="0" src="<%=chemincourt & RS.fields("PICTO1")%>"> <% end if %> </td> </tr> </table> </td> <% RS.MOVENEXT ' fiche suivante wend ' Fermeture du recordSet RS.close %>
</tr> </table> </td> </tr> </table> </div></body> </html> <%Conn.close : Set Conn=nothing%>
| MONFICHIER_FORM.asp dans cet exemple : on affiche - le bon formulaire en fonction de l'option choisie (ajouter, modifier, supprimer) - la fiche concernée (photo et commentaire)
| <!-- #include file="_Connexion.asp"--> <% ' -------------------------------------------------------------------- ' Répertoire de stockage des images photosMATABLE (déprotégé) cheminlong = Server.MapPath(".\photosMATABLE") & "\" chemincourt = "photosMATABLE/" ' -------------------------------------------------------------------- ' recuperation du nom de la TABLE table = request.querystring("CAT") ' recuperation du mode de traitement (AJOUTER - MODIFIER - SUPPRIMER) TRAITER = request.querystring("TRAITER") ' -------------------------------------------------------------------- ' si MODIFIER ou SUPPRIMER if ((TRAITER = "MODIFIER") or (TRAITER = "SUPPRIMER")) then ' on recupere aussi le numero de la fiche NUM = request.querystring("NUM") ' on recupere la fiche pour affichage SQL = "SELECT * FROM " & table & " WHERE NUM = " & NUM & ";" Set RS = server.createobject("ADODB.Recordset") RS.Open SQL,Conn , 3, 3 end if ' -------------------------------------------------------------------- %> <html><head><title></title></head> <body><div align= "center"> <% ' ----------------------------------------------------------------------------------- if (TRAITER = "AJOUTER") then %> <FORM method="post" ENCTYPE="multipart/form-data" action="MONFICHIER_TRAITER.asp"> <INPUT type="hidden" name="CAT" value="<%=table%>"> <INPUT type="hidden" name="TRAITER" value="<%=TRAITER%>"> <table> <tr> <td colspan="3">AJOUTER</td> </tr> <tr> <td colspan="3">Légende : <INPUT type="text" name="COMMENT1" size="50"></td> </tr> <tr> <td colspan="3">PHOTO : <INPUT TYPE=FILE NAME="PHOTO" size="40"></td> </tr> <tr> <td><a href="#" onclick="history.back()">ANNULER</a></td> <td><INPUT type="submit" value="CONFIRMER" name="CONFIRMER"></td> <td><INPUT type="reset" value="Rétablir" name="reset"></td> </tr> </table> </FORM> <% end if ' -------------------------------------------------------------------------------------- if (TRAITER = "MODIFIER") then %> <FORM method="post" ENCTYPE="multipart/form-data" action="MONFICHIER_TRAITER.asp"> <INPUT type="hidden" name="CAT" value="<%=table%>"> <INPUT type="hidden" name="TRAITER" value="<%=TRAITER%>"> <INPUT type="hidden" name="NUM" value="<%=NUM%>"> <INPUT type="hidden" name="PHOTO1avant" value="<%=RS.fields("PHOTO1")%>"> <INPUT type="hidden" name="PICTO1avant" value="<%=RS.fields("PICTO1")%>"> <table> <tr> <td colspan="3">MODIFIER</td> </tr> <tr> <td colspan="3">Légende : <INPUT type="text" name="COMMENT1" size="50" value="<%=RS.fields("COMMENT1")%>"> </td> </tr> <tr> <td colspan="3"> <% if (RS.fields("PHOTO1") <> "") then %> <img border="0" src="<%=chemincourt & RS.fields("PHOTO1")%>"> <% end if %> </td> </tr> <tr> <td colspan="3">PHOTO : <INPUT TYPE=FILE NAME="PHOTO1" size="40"></td> </tr> <tr> <td><a href="#" onclick="history.back()">ANNULER</a></td> <td><INPUT type="submit" value="CONFIRMER" name="CONFIRMER"></td> <td><INPUT type="reset" value="Rétablir" name="B2"> </td> </tr> </table> </FORM> <% end if ' -------------------------------------------------------------------------------------- if (TRAITER = "SUPPRIMER") then %> <FORM method="post" ENCTYPE="multipart/form-data" action="MONFICHIER_TRAITER.asp"> <INPUT type="hidden" name="CAT" value="<%=table%>"> <INPUT type="hidden" name="TRAITER" value="<%=TRAITER%>"> <INPUT type="hidden" name="NUM" value="<%=NUM%>"> <INPUT type="hidden" name="PHOTO1avant" value="<%=RS.fields("PHOTO1")%>"> <INPUT type="hidden" name="PICTO1avant" value="<%=RS.fields("PICTO1")%>"> <table> <tr> <td colspan="3">SUPPRIMER ?</td> </tr> <tr> <td colspan="3"><%=RS.fields("COMMENT1")%></td> </tr> <tr> <td colspan="3"> <% if (RS.fields("PHOTO1") <> "") then %> <img border="0" src="<%=chemincourt & RS.fields("PHOTO1")%>"> <% end if %> </td> </tr> <tr> <td colspan="3">(ATTENTION : toute suppression est définitive !)</td> </tr> <tr> <td><a href="#" onclick="history.back()">ANNULER</a></td> <td><INPUT type="submit" value="CONFIRMER" name="CONFIRMER"></td> <td><INPUT type="reset" value="Rétablir" name="B2"></td> </tr> </table> </FORM> <% end if ' -------------------------------------------------------------------------------------- %> </div></body> </html> <%Conn.close : Set Conn=nothing%>
| MONFICHIER_TRAITER.asp dans cet exemple : Restrictions sur les fichiers : jpg/jpeg, gif, png, bmp uniquement et 1024000 octets maxi.
Si "AJOUTER" ou MODIFIER" : 1- TELECHARGER les photos dans le dossier MONDOSSIER/MESIMAGES - stocker le nom dans les variables PHOTO1 et PICTO1 pour la base de donnees - PHOTO1 : on enregistre en ajoutant NUM- devant le nom de l'image uploadée - par défaut, PICTO1 = PHOTO1 (ici NUM est le numero auto -la CLE primaire- de la fiche dans la base de donnees) (on associe donc l image a la fiche concernee et on rend le nom de l image unique) (on evite ainsi toute confusion meme si on upload plus tard des images de meme nom) 2- REDIMENSIONNEMENT si nécessaire : - de la PHOTO ? (on veut ici une largeur maxi de 600 pixels), - du PICTO ? (on veut ici une largeur maxi de 100 pixels), dans ce cas, on renomme le PICTO1 = picto-PHOTO1 3- Enregistrement dans la base de données, 4- Suppression des anciennes photos du dossier
Si "SUPPRIMER" : 1- suppression de la fiche dans la base de données, 2- supressions des photos et pictos concernés dans le dossier.
| <!-- #include file="_Connexion.asp"--> <% ' Répertoire de stockage des images photosMATABLE (déprotégé) cheminlong = Server.MapPath(".\photosMATABLE") & "\" chemincourt = "photosMATABLE/" ' ----------------------------------------------------------------- ' Pour traiter le formulaire : composant ASPSMARTUPLOAD (gratuit) ' Pour redimensionner ensuite les images : composant ASPIMAGE (payant) ' ----------------------------------------------------------------- ' Avec la methode ENCTYPE=multipart/form-data du formulaire ' On ne peut plus recuperer les champs TEXT avec request.form !! ' on les recuperera donc avec aspSmartUpload (.form) ' ----------------------------------------------------------------- ' Création de l instance des elements du formulaire On Error Resume Next Set MonUPLOAD = Server.CreateObject("aspSmartUpload.SmartUpload") ' restriction sur les fichiers autorises MonUPLOAD.AllowedFilesList = "jpg,jpeg,gif,png,bmp" MonUPLOAD.DeniedFilesList = "bat,exe,com,asp,php,pdf,txt,doc,xls" ' Taille max des fichiers (octets) MonUPLOAD.MaxFileSize = 1024000 ' upload du formulaire MonUPLOAD.UpLoad ' ------------------------------------------------------------- ' recuperation du nom de la TABLE table = MonUPLOAD.Form("CAT") ' recuperation du mode de traitement (AJOUTER - MODIFIER - SUPPRIMER) TRAITER = MonUPLOAD.Form("TRAITER") ' -------------------------------------------------------------------------------------- ' GESTION DES ERREURS ' -------------------------------------------------------------------------------------- ' on verifie qu un fichier (photo) a bien ete entre avant de continuer fileexiste = 0 for each file In MonUPLOAD.Files if (file.FileName<>"") then fileexiste = 1 end if next ' ------------------------------------------------------------- ' on verifie les restrictions des fichiers if (err AND ((TRAITER = "AJOUTER") or (TRAITER = "MODIFIER"))) then ' affichage d'une alerte en cas d erreur et retour au formulaire response.write "Erreur ! Vous ne pouvez uploader que des IMAGES (jpg, bmp, png ou gif)<br>" response.write "<a href=""#"" onclick=""history.back()"">Retour au formulaire</a>" ' ------------------------------------------------------------- elseif (TRAITER = "AJOUTER" and fileexiste = 0) then response.write "Erreur ! Pas de fichier IMAGE défini<br>" response.write "<a href=""#"" onclick=""history.back()"">Retour au formulaire</a>" ' ------------------------------------------------------------- elseif (TRAITER = "MODIFIER" and fileexiste = 0 and MonUPLOAD.Form("PHOTO1avant")="") then response.write "Erreur ! Pas de fichier IMAGE défini<br>" response.write "<a href=""#"" onclick=""history.back()"">Retour au formulaire</a>" ' ------------------------------------------------------------- ' si pas d'erreur : traitement else ' -------------------------------------------------------------------------------------- ' TRAITEMENT des champs TEXT (autres que FILE) ' -------------------------------------------------------------------------------------- if (TRAITER = "AJOUTER") then ' recuperation des champs TEXT avec aspSmartUpload (.form) COMMENT = MonUPLOAD.Form("COMMENT1") ' Remplacer les apostrophes par double-apostrophes COMMENT = replace(trim(COMMENT),"'","''") ' ------------------------------------------------------------- ' ENREGISTREMENT dans la table par INSERT URL = Request.ServerVariables("SCRIPT_NAME") listechamps = "COMMENT1" listevaleurs = "'" & COMMENT & "'" SQL = "INSERT INTO " & table & " (" & listechamps & ") VALUES (" & listevaleurs & ");" Conn.Execute(SQL) ' ------------------------------------------------------------- ' recuperation du NUM en selectionnant LA DERNIERE fiche cree req_CLE="SELECT MAX(NUM) AS CLEMax FROM MATABLE;" set rs_CLE=server.CreateObject("ADODB.recordset") rs_CLE.open req_CLE,Conn , 3, 3 NUM = rs_CLE.fields("CLEMax") end if ' -------------------------------------------------------------------------------------- if (TRAITER = "MODIFIER") then NUM = MonUPLOAD.Form("NUM") COMMENT = MonUPLOAD.Form("COMMENT1") COMMENT = replace(trim(COMMENT),"'","''") ' ------------------------------------------------------------- ' ENREGISTREMENT dans la table par UPDATE URL = Request.ServerVariables("SCRIPT_NAME") champs = " COMMENT1='" & COMMENT & "'" SQL = "UPDATE " & table & " SET " & champs & " WHERE NUM=" & NUM &";" Conn.Execute(SQL) ' ------------------------------------------------------------- ' recuperation du nom des anciennes photos PHOTOavant = MonUPLOAD.Form("PHOTO1avant") PICTOavant = MonUPLOAD.Form("PICTO1avant") ' par defaut PHOTO = PHOTOavant PICTO = PICTOavant end if ' -------------------------------------------------------------------------------------- ' TRAITEMENT des champs FILE (PHOTOS et PICTOS) ' -------------------------------------------------------------------------------------- if ((TRAITER = "AJOUTER") or (TRAITER = "MODIFIER")) then ' TELECHARGER les photos dans le dossier MONDOSSIER/MESIMAGES ' et stocker le nom dans les variables PHOTO et PICTO pour la base de donnees ' on enregistre en ajoutant NUM- devant le nom de la PHOTO uploadee ' ici NUM est le numero auto -la CLE primaire- de la fiche dans la base de donnees ' on associe donc l image a la fiche concernee et on rend le nom de l image unique ' on evite ainsi toute confusion meme si on upload plus tard des images de meme nom ' ------------------------------------------------------------- ' upload des images avec aspSmartUpload (.Files) ' ------------------------------------------------------------- for each file In MonUPLOAD.Files if (file.FileName<>"") then PHOTOupload = NUM & "-" & file.FileName ' pour eviter tout probleme par la suite, on remplace jpeg par jpg if Ucase(file.FileExt)="JPEG" then PHOTOupload = replace(PHOTOupload,"JPEG","jpg") PHOTOupload = replace(PHOTOupload,"jpeg","jpg") end if ' on enregistre la PHOTO file.SaveAs(cheminlong & PHOTOupload) ' ------------------------------------------------------------- ' reservation des noms pour la BD PHOTO = PHOTOupload ' par defaut PICTO = PHOTO ' ------------------------------------------------------------- ' recuperation de l extension decoupe = split(PHOTOupload,".") extensionimage = decoupe(ubound(decoupe)) ' ------------------------------------------------------------- ' REDIMENSIONNEMENT et SAUVEGARDE de la PHOTO ' on utilise ici le composant ASPIMAGE (payant) ' (NB : ASPIMAGE ne gere pas le redimensionnement des GIF) if InStr("JPEG JPG PNG BMP",Ucase(extensionimage)) then ' ------------------------------------------------------------- ' Création de l instance sur l image Set Image = Server.CreateObject("AspImage.Image") ' recuperation et chargement de l image Image.LoadImage cheminlong & PHOTO ' NB : les dimensions de l image sont donnees par : ' Image.MaxY (hauteur) et Image.MaxX (largeur) ' ------------------------------------------------------------- ' on souhaite une image finale de W pixels de largeur maxi ' ici : 600 pixels de large W = 600 ' on determine la hauteur finale en proportion H = W * Image.MaxY / Image.MaxX ' ------------------------------------------------------------- ' On pourrait tout aussi bien imposer une hauteur donnee : ' H = 400 ' W = H * Image.MaxX / Image.MaxY ' ------------------------------------------------------------- ' REDIMENSIONNEMENT si Image.MaxX est plus grand que W ' NB : ResizeR est disponible avec la version 2.0 de AspImage ' sinon, utiliser Resize ' ------------------------------------------------------------- if (Image.MaxX > W) then ' redimensionnement Image.ResizeR W,H Image.FileName = cheminlong & PHOTO 'Sauvegarde de la photo en fonction de l extension if (Ucase(extensionimage)="JPG" OR Ucase(extensionimage)="JPEG") then Image.ImageFormat=1 elseif (Ucase(extensionimage)="BMP") then Image.ImageFormat=2 elseif (Ucase(extensionimage)="PNG") then Image.ImageFormat=3 end if Image.SaveImage end if ' ------------------------------------------------------------- ' REDIMENSIONNEMENT et SAUVEGARDE du PICTO avec AspImage ' ------------------------------------------------------------- Set Image = Server.CreateObject("AspImage.Image") Image.LoadImage cheminlong & PICTO ' ------------------------------------------------------------- ' on souhaite un PICTO de 100 pixels de largeur maxi W = 100 H = W * Image.MaxY / Image.MaxX if (Image.MaxX > W) then Image.ResizeR W,H ' ici on enregistre le PICTO avec picto- devant PICTO = "picto-" & PICTO Image.FileName = cheminlong & PICTO if (Ucase(extensionimage)="JPG" OR Ucase(extensionimage)="JPEG") then Image.ImageFormat=1 elseif (Ucase(extensionimage)="BMP") then Image.ImageFormat=2 elseif (Ucase(extensionimage)="PNG") then Image.ImageFormat=3 end if Image.SaveImage end if ' ------------------------------------------------------------- end if end if next ' ----------------------------------------------------------------- ' ENREGISTEMENT dans la BASE DE DONNEES URL = Request.ServerVariables("SCRIPT_NAME") ' update de la table champ="" champ=champ&" PHOTO1='" & PHOTO & "', " champ=champ&" PICTO1='" & PICTO & "' " URL = Request.ServerVariables("SCRIPT_NAME") SQL = "UPDATE " & table & " SET " & champ & " WHERE NUM=" & NUM & " ;" Conn.Execute(SQL) ' ----------------------------------------------------------------- if (TRAITER = "MODIFIER") then ' SUPPRESSION des anciennes PHOTOS dans le dossier photosMATABLE URL = Request.ServerVariables("SCRIPT_NAME") Set FSO = Server.CreateObject("Scripting.FileSystemObject") if (PHOTOavant<>"" and PHOTOavant<>PHOTO and PICTOavant<>PICTO) then set filePt = FSO.getFile(cheminlong & PHOTOavant) filePt.Delete end if if (PICTOavant<>"" and PICTOavant<>PICTO and PICTOavant<>PHOTO) then set filePt = FSO.getFile(cheminlong & PICTOavant) filePt.Delete end if end if ' ----------------------------------------------------------------- ' on recupere la fiche pour re-affichage SQL = "SELECT * FROM " & table & " WHERE NUM = " & NUM & ";" Set RS = server.createobject("ADODB.Recordset") RS.Open SQL,Conn , 3, 3 end if ' -------------------------------------------------------------------------------------- if (TRAITER = "SUPPRIMER") then ' recuperation des champs avec request.form (formulaire SIMPLE) NUM = MonUPLOAD.Form("NUM") PHOTOavant = MonUPLOAD.Form("PHOTO1avant") PICTOavant = MonUPLOAD.Form("PICTO1avant") ' SUPPRESSION de la fiche numero NUM dans la BASE DE DONNEES SQLsupprime = "DELETE FROM " & table & " WHERE NUM = " & NUM & ";" Conn.Execute(SQLsupprime) ' ----------------------------------------------------------------- ' SUPPRESSION des PHOTOS dans le dossier photosMATABLE URL = Request.ServerVariables("SCRIPT_NAME") Set FSO = Server.CreateObject("Scripting.FileSystemObject") if (PHOTOavant<>"") then set filePt = FSO.getFile(cheminlong & PHOTOavant) filePt.Delete end if if (PICTOavant<>"" and PICTOavant<>PHOTOavant) then set filePt = FSO.getFile(cheminlong & PICTOavant) filePt.Delete end if end if %> <html><head><title></title></head> <body><div align="center"> <% ' -------------------------------------------------------------------------------------- if ((TRAITER = "AJOUTER") or (TRAITER = "MODIFIER")) then %> <table> <tr> <td> <% if (TRAITER = "AJOUTER") then %>LA PHOTO a été AJOUTEE.<% end if %> <% if (TRAITER = "MODIFIER") then %>LA PHOTO a été MODIFIEE.<% end if %> </td> </tr> <tr> <td><a href="MONFICHIER_LISTE.asp?CAT=<%=table%>">RETOUR</a></td> </tr> <tr> <td><%=RS.fields("COMMENT1")%></td> </tr> <tr> <td> <% if RS.fields("PHOTO1")<>"" then %> <img src="<%=chemincourt & RS.fields("PHOTO1")%>"> <% end if %> </td> </tr> </table> <% end if ' -------------------------------------------------------------------------------------- if (TRAITER = "SUPPRIMER") then %> <table> <tr> <td>LA PHOTO a été SUPPRIMEE.</td> </tr> <tr> <td><a href="MONFICHIER_LISTE.asp?CAT=<%=table%>">RETOUR</a></td> </tr> </table> <% end if ' -------------------------------------------------------------------------------------- ' fin si pas erreur end if %> </div></body></html> <%Conn.close : Set Conn=nothing%>
| Remarques : | Ce tuto est à considérer comme un exercice (néanmoins parfaitement fonctionnel !).
C'est une mise en pratique de différents éléments enseignés dans le tutorial ASP : - base de données (connexion, affichage, modification, ...) - formulaire (text + file) - traitement (upload, gestion d'erreurs, enregistrement, ...) - image (redimensionnement, ...) - composants aspsmartupload et aspimage
J'ai surtout cherché à faire des pages CLAIRES, facile à lire : - avec un maximum d'explications, - des noms de variables explicites, (cheminlong, PHOTO1avant, ...) - des paragraphes bien séparés.
Ce qui signifie qu'elles peuvent bien entendu : - être optimisées et améliorées ! - être adaptées à vos besoins.
| | Optimisations ? Utilisation dans un espace d'administration : http://www.aspfr.com/tutoriaux/ASP-ADMINISTRER-LIGNE-PROTECTION-PAGES_884.aspx Utilisation par les visiteurs : On doit d'abord récupérer l'IDvisiteur. (le visiteur ne doit pas avoir accès à toute la base, mais seulement à ses propres photos !) - soit il a ses propres tables (ex. IDvisiteur_MATABLE1, ...) - soit vérifier ses droits d'accès avant ...
Traitement de plusieurs tables : Déja prévu : le nom de la table étant enregistré dans la variable "table", il est simple de changer de table : Dans le fichier MONFICHIER_LISTE.asp Au lieu de : table = MATABLE On met : table=request.querystring("CAT") En précisant à l'appel du fichier : MONFICHIER_LISTE.asp?CAT=MATABLE
Conditions de redimensionnement : Dépend surtout du choix de l'affichage final en ligne ? en colonne ? en tableau ? dans des cases de dimensions fixes ?
Dans le fichier MONFICHIER_TRAITER.asp (traitement) - redimensionner pour une largeur donnée :
| <% W = 600 H = W * Image.MaxY / Image.MaxX ' ... Image.ResizeR W,H %> | - on peut choisir une hauteur donnée : | <% H = 400 W = H * Image.MaxX / Image.MaxY ' ... Image.ResizeR W,H %> | - ou pour tenir dans une case de 600 x 400 max : | <% W = 600 H = 400 ratiox=Image.MaxX/W ' Ratio en largeur ratioy=Image.MaxY/H ' Ratio en hauteur if(ratiox>ratioy) then ' lequel est le plus grand ratio=ratiox else ratio=ratioy end if ' ... Image.ResizeR Image.MaxX/ratio,Image.MaxY/ratio %> | Nombre de photos : On peut gérer la saisie simultanée de plusieurs photos. Pour les formulaires : PHOTO1, PHOTO2, ... PHOTOn (et COMMENT1, COMMENT2, ... COMMENTn) Pour le traitement (adapter aussi pour l'enregistrement dans la BD):
| <% ' n est le nombre total de photos ' ----------------------------------------------------- for (i=1;i<=n;i++) COMMENT = MonUPLOAD.Form("COMMENT"&i) ' ... PHOTO = MonUPLOAD.Form("PHOTO"&i) PICTO = MonUPLOAD.Form("PICTO"&i) ' ... next ' ----------------------------------------------------- i=1 for each file In MonUPLOAD.Files if (file.FileName<>"" and i<=n) then ' ... ' code pour les photos ... ' ... ' idem pour les pictos ... ' ... i++ next ' ----------------------------------------------------- %> | Redimensionner aussi les GIF ? Il faut passer par d'autres composants ASP : par exemple csASPUpload - csImageFile ou autres ...
Upload de GROS fichiers (plus de 100Mo) ? par exemple www.motobit.com - Huge ASP upload (jusqu'à 2 Go !) www.motobit.com - Pure ASP upload (version gratuite, jusqu'à 10 Mo)
Commentaires
|
|