UpLoad de fichiers et Base de Données
Pour uploader un fichier on passe toujours par le biais de composants externes qu'il est nécessaire d'avoir installés sur son serveur, les plus connus sont :
SA-FileUp (www.softartisans.com/softartisans/saf.html commercial)
SmartUpload (www.aspsmart.com/fr/ gratuit).
Pour pouvoir uploader un fichier sur votre serveur, vous devez avoir un répertoire déprotégé, donc avec l'accès en lecture/écriture (rép "upload" pour notre exemple).
Commençons par créer ce formulaire qui sera remplir par l'utilisateur :
Code formulaire
<form name="form1" method="post" action="pageupl2.asp"
enctype="multipart/form-data">
<table width="95%" border="0" cellspacing="5">
<tr>
<td width="45%">Pseudo :</td>
<td width="55%"><input type="text" name="pseudo"></td>
</tr><tr>
<td width="45%">Age :</td>
<td width="55%"><input type="text" name="age"></td>
</tr><tr>
<td width="45%">Site Web :</td>
<td width="55%">
<input type="text" name="site" value="http://"></td>
</tr><tr>
<td width="45%">Fichier :</td>
<td width="55%"><input type="file" name="fichier"></td>
</tr><tr>
<td width="45%"></td>
<td width="55%">
<input type="submit" name="Submit" value=" Valider ">
</td>
</tr>
</table>
</form>
Il y a quelque chose de très important dans ce formulaire, il s’agit de la ligne magique enctype="multipart/form-data".
Passons à l'enregistrement du fichier : (La table TUsers comprends ici 5 champs : Id, Pseudo, Age, Site, Photo)
SA-FileUp (www.softartisans.com/softartisans/saf.html commercial)
SmartUpload (www.aspsmart.com/fr/ gratuit).
Pour pouvoir uploader un fichier sur votre serveur, vous devez avoir un répertoire déprotégé, donc avec l'accès en lecture/écriture (rép "upload" pour notre exemple).
Commençons par créer ce formulaire qui sera remplir par l'utilisateur :
Code formulaire
<form name="form1" method="post" action="pageupl2.asp"
enctype="multipart/form-data">
<table width="95%" border="0" cellspacing="5">
<tr>
<td width="45%">Pseudo :</td>
<td width="55%"><input type="text" name="pseudo"></td>
</tr><tr>
<td width="45%">Age :</td>
<td width="55%"><input type="text" name="age"></td>
</tr><tr>
<td width="45%">Site Web :</td>
<td width="55%">
<input type="text" name="site" value="http://"></td>
</tr><tr>
<td width="45%">Fichier :</td>
<td width="55%"><input type="file" name="fichier"></td>
</tr><tr>
<td width="45%"></td>
<td width="55%">
<input type="submit" name="Submit" value=" Valider ">
</td>
</tr>
</table>
</form>
Il y a quelque chose de très important dans ce formulaire, il s’agit de la ligne magique enctype="multipart/form-data".
Passons à l'enregistrement du fichier : (La table TUsers comprends ici 5 champs : Id, Pseudo, Age, Site, Photo)
1. Enregistrer le fichier :
<% ' script de connection à la base non inclu
Set Upl = Server.CreateObject("SoftArtisans.FileUp")
' on instancie Upl, l'objet d'upload, ici SA-FileUp
NomFichier = Mid(upl.UserFilename, InstrRev(upl.UserFilename, "\") + 1)
' on ne garde que le nom de fichier
SQL = "SELECT * FROM TUsers order by Id DESC"
RS.open SQL,Conn,2,3
' on ouvre sa table
RS.addnew
RS("Pseudo") = ObjUpl.Form("Pseudo")
RS("Age") = ObjUpl.Form("Age")
RS("Site") = ObjUpl.Form("Site")
RS("Photo") = NomFichier
RS.update
' on crée un nouvel enregistrement avec dans le champs "Photo", le nom court du fichier+extension
Upl.form("fichier").SaveAs Server.MapPath(".") & "\upload\" & RS("photo")
Response.Write "Le fichier " & NomFichier & " a été sauvegardé."
' on enregistre le fichier venant du champs "fichier" du formulaire dans le sous-répertoire upload
' (rép déprotégé) du chemin actuel, sous son nom d'origine
RS.Requery
' on réexécute la requête pour prendre en compte cet ajout
%>
2. On ressort les fichiers :
<table border="0" cellspacing="5">
<% ' on boucle sur tous les enregistrement de la base
while not RS.EOF %>
<tr>
<td>
<img src="/asp/upload/<%=RS("photo")%>" border="0">
<!-- on ressort l'image qui se trouve donc dans le rep "Upload",
on ressort son nom de fichier de la base -->
</td><td nowrap>
Pseudo : <%=RS("Pseudo")%><br>
Age : <%=RS("Age")%><br>
Site web : <a href="<%=RS("Site")%>"
target="_blank"><%=RS("Site")%></a>
</td>
</tr>
<% ' on sort toutes les autres informations et on boucle
RS.movenext()
wend %>
</table>
Les autres commandes utiles du composant SA-FileUp :
<%=upl.TotalBytes%> : Nombre total d'octets transférés
<% upl.MaxBytes = 65535 %> : Nombre d'octets max pour le transfert, ici 64ko
<%=upl.ContentType%> : Récupère le type MIME du fichier envoyé, on peut ensuite le comparer via :
<% Select Case LCase(TypeFichier) ' On récupère le type du fichier
Case "image/jpeg"
Response.Write "Le fichier " & NomFichier & " a été sauvegardé." ' si jpeg, alors on enregistre
Case else
upl.delete ' sinon on efface le fichier
Response.Write "Le fichier " & NomFichier & " a été effacé."
End Select %>
Quelques types MIME : image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Enregistrer plusieurs fichiers en même temps :
<% upl.FormEx("fichier1").SaveAs Server.MapPath(".") & "\upload\" & RS("photo1") %>
<% upl.FormEx("fichier2").SaveAs Server.MapPath(".") & "\upload\" & RS("photo2") %>
<% ' script de connection à la base non inclu
Set Upl = Server.CreateObject("SoftArtisans.FileUp")
' on instancie Upl, l'objet d'upload, ici SA-FileUp
NomFichier = Mid(upl.UserFilename, InstrRev(upl.UserFilename, "\") + 1)
' on ne garde que le nom de fichier
SQL = "SELECT * FROM TUsers order by Id DESC"
RS.open SQL,Conn,2,3
' on ouvre sa table
RS.addnew
RS("Pseudo") = ObjUpl.Form("Pseudo")
RS("Age") = ObjUpl.Form("Age")
RS("Site") = ObjUpl.Form("Site")
RS("Photo") = NomFichier
RS.update
' on crée un nouvel enregistrement avec dans le champs "Photo", le nom court du fichier+extension
Upl.form("fichier").SaveAs Server.MapPath(".") & "\upload\" & RS("photo")
Response.Write "Le fichier " & NomFichier & " a été sauvegardé."
' on enregistre le fichier venant du champs "fichier" du formulaire dans le sous-répertoire upload
' (rép déprotégé) du chemin actuel, sous son nom d'origine
RS.Requery
' on réexécute la requête pour prendre en compte cet ajout
%>
2. On ressort les fichiers :
<table border="0" cellspacing="5">
<% ' on boucle sur tous les enregistrement de la base
while not RS.EOF %>
<tr>
<td>
<img src="/asp/upload/<%=RS("photo")%>" border="0">
<!-- on ressort l'image qui se trouve donc dans le rep "Upload",
on ressort son nom de fichier de la base -->
</td><td nowrap>
Pseudo : <%=RS("Pseudo")%><br>
Age : <%=RS("Age")%><br>
Site web : <a href="<%=RS("Site")%>"
target="_blank"><%=RS("Site")%></a>
</td>
</tr>
<% ' on sort toutes les autres informations et on boucle
RS.movenext()
wend %>
</table>
Les autres commandes utiles du composant SA-FileUp :
<%=upl.TotalBytes%> : Nombre total d'octets transférés
<% upl.MaxBytes = 65535 %> : Nombre d'octets max pour le transfert, ici 64ko
<%=upl.ContentType%> : Récupère le type MIME du fichier envoyé, on peut ensuite le comparer via :
<% Select Case LCase(TypeFichier) ' On récupère le type du fichier
Case "image/jpeg"
Response.Write "Le fichier " & NomFichier & " a été sauvegardé." ' si jpeg, alors on enregistre
Case else
upl.delete ' sinon on efface le fichier
Response.Write "Le fichier " & NomFichier & " a été effacé."
End Select %>
Quelques types MIME : image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Enregistrer plusieurs fichiers en même temps :
<% upl.FormEx("fichier1").SaveAs Server.MapPath(".") & "\upload\" & RS("photo1") %>
<% upl.FormEx("fichier2").SaveAs Server.MapPath(".") & "\upload\" & RS("photo2") %>