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 &agrave; 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