Script - Académie de Nancy-Metz
Transcription
Script - Académie de Nancy-Metz
ASP Script 14 Upload Principe On veut associer un fichier externe à chaque fiche d’une base de données. Ce fichier externe sera stocké dans un répertoire UPLOAD. Le nom du fichier sera stocké dans le champ FICHIER de la table LISTING. On veut pouvoir envoyer ce fichier en téléchargement au moment de la création ou de la modification de la fiche. form.asp est un formulaire qui récupère en QueryString le numéro de la fiche à modifier. Il va servir à la fois pour afficher les données de la table ET pour proposer un fichier du disque dur au téléchargement. Le formulaire devra donc être de type multipart/form-data. form.asp <!--#include file="connecteur.asp" --> <% num=request.QueryString("num") set rs=server.CreateObject("adodb.recordset") requete="select * from listing where num=" & num rs.open requete,connecteur,1,2,1 %> .../... <form action="upload.asp?num=<%=rs("num")%>" method="post" enctype="multipart/form-data" name="form1" id="form1"> .../... Ici on a les champs habituels avec les données de la table .../... Ici on a l’affichage du fichier actuel s’il existe, et l’input FILE pour parcourir le disque dur : <p>Fichier actuel: <%if rs("fichier")="" or isnull(rs("fichier")) then%> pas de fichier pour le moment <%else%> <img src="../Uploader/Upload/<%=rs("fichier")%>" /> <%end if%> <br /> Fichier à envoyer : <input name=" fichier" type="file" id=" fichier" /> </p> .../... Suite du formulaire upload.asp <% Set Upload = Server.CreateObject("Persits.Upload.1") racine=server.mappath("/formasp") & "\uploader\upload" Upload.OverwriteFiles = true Upload.SetMaxSize 400000 ' Limit files to 40O Ko c = Upload.Save(racine & "\temp") num=request.QueryString("num") if c=0 then ... (pas de fichier envoyé) ... ici on a l’équivalent du request.form qu’on ne peut utiliser avec un encodage de type multipart/form-data ce qui permettra d’alimenter la base de données avec les nouvelles valeurs : For Each Item in Upload.Form If Item.Name = "nom" Then nom= Item.Value If Item.Name = "fonction" Then fonction= Item.Value If Item.Name = "age" Then age= Item.Value Next Formation ASP - Pascal PIERRE S14 – Script 14 - page 1 Ici on récupère le nom du fichier uploadé (pour le stocker dans la base) : if c>0 then ‘uniquement si un fichier a été envoyé Set File = Upload.Files(1) nomFichier=File.OriginalPath set file = nothing end if set upload=nothing%> là, on peut écrire dans la base : <!--#include file="connecteur.asp" --> <% set rs=server.CreateObject("adodb.recordset") rs.open "select * from listing where num=" & num,connecteur,1,2,1 rs("nom")=nom rs("fonction")=fonction rs("age")=age if c>0 then rs("fichier")= nomFichier end if rs.update rs.close connecteur.close response.redirect ("default.asp") %> Formation ASP - Pascal PIERRE S14 – Script 14 - page 2