I. Actions & Propriétés▲
Ce composant puissant et gratuit offre une gestion avancée des transferts de fichiers en flux montant ou descendant, avec notamment un contrôle des fichiers en Upload, la restriction sur leurs caractéristiques en Download ou encore la gestion des formulaires en mode mixte.
Cependant, l'éditeur de ce composant "ne répond plus" : il n'est donc plus développé, ni supporté par son éditeur.
Télécharger le composant ASPSmartUpload : |
---|
Télécharger aspsmartupload.zip |
A- LE FORMULAIRE : (Obligatoire : enctype="multipart/form-data")
<
form
method
=
"
post
"
enctype
=
"
multipart
/
form
-
data
"
>
<
input
type
=
"
file
"
name
=
"
MONFICHIER
"
>
<
br
/
>
<
input
type
=
"
text
"
name
=
"
MONTEXTE
"
>
<
br
/
>
<
input
type
=
"
submit
"
value
=
"
Enregistrer
"
>
<
/
form
>
B- RECUPERATION des champs du formulaire :
Important : comme on a un formulaire avec enctype="multipart/form-data":
ON NE PEUT PLUS récupérer les champs de données (type="text") avec request.form("...") !
On doit passer par le composant AspSmartUpload.
Le composant ASPSmartUpload comporte un objet principal, appelé SmartUpload,
lui-même comprenant deux collections :
- collection Files (pour les fichiers : type="file")
- collection Form (pour les donnees : type="text", …)
II. CREATION de l'OBJET▲
<%
'
Création
de
l
objet
:
On
Error
Resume
Next
Set
MonUPLOAD =
Server
.
CreateObject
(
&
quot;aspSmartUpload.
SmartUpload
&
quot;)
'
...
'
...
-
propriétés
-
actions
-
traitement
files
et
data
-
...
'
...
'
Fermeture
de
l
objet
(à
la
fin
du
traitement)
:
Set
MonUPLOAD =
Nothing
%>
PROPRIETES :
On peut spécifier des propriétés ou restrictions pour l'Upload.
PROPRIETES : | |
---|---|
MonUPLOAD.TotalMaxFileSize | =2000000 taille maximale totale autorisée pour l'upload de fichiers (en octets). |
MonUPLOAD.MaxFileSize | =1000000 taille maximale autorisée par fichier lors de l'upload (en octets). |
MonUPLOAD.AllowedFilesList | ="gif,jpg,jpeg" liste des extensions des fichiers autorisées pour l'upload. |
MonUPLOAD.DeniedFilesList | ="exe,php,asp,txt" liste des extensions des fichiers refusées lors de l'upload. |
MonUPLOAD.DenyPhysicalPath | =true (par défaut = false) empêche l'enregistrement de fichiers dans des répertoires autres que les répertoires virtuels. |
MonUPLOAD.ContentDisposition | ="attachment;" ou ="inline;" ou ="" modifie le content-disposition. |
MonUPLOAD.DownloadBlockSize | =4096 taille des blocs d'une source de données lues. |
MonUPLOAD.TotalBytes | retourne la taille totale des données transmises (en octets). |
MonUPLOAD.BinaryData(indice) | retourne l'octet correspondant à l'indice du tableau contenant les données transmises. |
ACTIONS :
Les différentes actions de traitement du formulaire.
ACTIONS : | |
---|---|
MonUPLOAD.UpLoad | exécute le transfert en upload du formulaire. |
MonUPLOAD.Save | sauvegarde tous les fichiers transmis. (après MonUPLOAD.UpLoad) |
ou | |
MonUPLOAD.DownloadFile | "c:\temp\myfile.txt", "text/plain", "newfile.txt" exécute le transfert en download d'un Fichier. |
MonUPLOAD.DownloadField | myRecordSet("FILE"), "text/plain", "newfile.txt" télécharge un fichier à partir d'une base de données. |
MonUPLOAD.FieldToFile | myRecordSet.Field("FILE"), "c:\temp\myFile.txt" crée un nouveau fichier contenant les données d'un champ d'une table d'une base de données. |
MonUPLOAD.UploadInFile | "c:\temp\myData.txt" enregistre le formulaire complet dans un Fichier. |
III. COLLECTION FILES▲
(récupération des fichiers type=FILE)
MonUPLOAD.Files.Count | retourne le nombre de champs (de type fichier). |
MonUPLOAD.Files.TotalBytes | retourne la taille totale en octets de la collection Files. |
<%
For
each
Fichier In
MonUPLOAD.
Files
if
not
Fichier.
IsMissing
then
'
seulement
si
le
champ
a
ete
renseigne
'
...
(c
est
ici
qu
on
fait
appel
aux
fonctions
et
actions
de
la
collection
Files)
end
if
next
%>
FONCTIONS de la Collection Files : | |
---|---|
Fichier.Name | retourne le nom du champ du formulaire. |
Fichier.FileName | retourne le nom du fichier saisie par l'utilisateur. |
Fichier.FileExt | retourne l'extension du fichier saisie par l'utilisateur. |
Fichier.FilePathName | retourne le chemin du fichier saisie par l'utilisateur. |
Fichier.ContentType | retourne le Content-Type du fichier saisie par l'utilisateur. |
Fichier.ContentDisp | retourne le Content-Disposition du formulaire. |
Fichier.Size | retourne la taille du Fichier. |
Fichier.ContentString | retourne le contenu du fichier dans une chaîne de caractères. |
Fichier.TypeMIME | retourne le type MIME du fichier saisie par l'utilisateur. |
Fichier.SubTypeMIME | retourne le sous-type MIME du fichier saisie par l'utilisateur. |
Fichier.IsMissing | retourne True si l'utilisateur n'a pas saisi de Fichier. |
Fichier.BinaryData | retourne l'octet correspondant à l'indice du tableau contenant les données transmises. |
ACTIONS de la Collection Files : | |
---|---|
Fichier.SaveAs | sauvegarde le fichier sur le disque. |
Fichier.FileToField | sauvegarde le contenu d'un fichier dans le champ d'une table d'une base de données. |
IV. COLLECTION FORM▲
(récupération des données type=TEXT)
FONCTIONS de la Collection Form : | |
---|---|
MonUPLOAD.Form.Count | retourne le nombre de champs (de type donnees) |
MonUPLOAD.Form(index).Name | retourne le nom du champ index |
MonUPLOAD.Form(index).Values | retourne la valeur du champ index |
Pour lister tous les champs de type données :
<%
i=
1
While
(
i <
=
MonUPLOAD.
Form
.
Count
)
MonUPLOAD.
Form
(
i).
Name
'
retourne
le
nom
du
champ
du
formulaire.
MonUPLOAD.
Form
(
i).
Values
'
retourne
les
valeurs
du
champ
du
formulaire.
i =
i +
1
Wend
%>
Pour obtenir la valeur d'un champ en particulier : (name="MONTEXTE")
<%
=
MonUPLOAD.
Form
(
"
MONTEXTE
"
) %>
V. EXEMPLE d'utilisation des fonctions▲
Exemple avec 2 champs "file", 2 champs "text", 1 champ "textarea"
Résultats : affichage des valeurs de différentes fonctions
<
html
>
<
head
>
<
title
>
ASPSmartUpload - Exemple<
/
title
>
<
/
head
>
<
body
>
<
div
id
=
"
formulaire
"
>
Le FORMULAIRE :<
br
/
>
<
form
method
=
"
POST
"
enctype
=
"
multipart
/
form
-
data
"
action
=
"
"
>
Commentaire : <
textarea
rows
=
"
3
"
name
=
"
COMMENTAIRE
"
cols
=
"
40
"
>
<
/
textarea
>
<
br
/
>
Fichier 1: <
input
type
=
"
file
"
name
=
"
FICHIER1
"
size
=
"
20
"
>
<
br
/
>
Description 1: <
input
name
=
"
DESCR1
"
size
=
"
30
"
>
<
br
/
>
Fichier 2: <
input
type
=
"
file
"
name
=
"
FICHIER2
"
size
=
"
20
"
>
<
br
/
>
Description 2: <
input
name
=
"
DESCR2
"
size
=
"
30
"
>
<
br
/
>
<
input
type
=
submit
value
=
"
VALIDEZ
pour
afficher
les
infos
"
>
<
br
/
>
<
/
form
>
(remarque : l'option d'enregistrement a été désactivée dans le traitement ...)
<
/
div
>
<
br
/
>
<
br
/
>
<%
'
TRAITEMENT
du
formulaire
'
--------------------------------------------------------------------------------------
'
CREATION
de
l
objet
on
error
resume
next
set
MonUPLOAD =
Server
.
CreateObject
(
"
aspSmartUpload.SmartUpload
"
)
'
--------------------------------------------------------------------------------------
'
Placez
ICI
les
PROPRIETES
ou
RESTRICTIONS
eventuelles
pour
les
fichiers
MonUPLOAD.
TotalMaxFileSize
=
1000000
'
(1000ko
max
total)
MonUPLOAD.
MaxFileSize
=
500000
'
(500ko
max
par
fichier)
MonUPLOAD.
AllowedFilesList
=
"
jpg,jpeg,gif,png
"
'
(ici
:
images
uniquement)
MonUPLOAD.
DeniedFilesList
=
"
bat,exe,com,asp,php,pdf,txt,doc,xls
"
'
...
'
--------------------------------------------------------------------------------------
'
UPLOAD
du
formulaire
MonUPLOAD.
Upload
'
--------------------------------------------------------------------------------------
On
error
goto
0
'
gestion
des
ERREURS
if
(
err
<
>
0
and
err
<
>
9
) then
'
affichage
d'une
alerte
en
cas
d
erreur
(restrictions
imposees)
response
.
write
"
erreur
!
"
&
err
.
description
'
Fermeture
de
l
objet
:
set
MonUPLOAD =
Nothing
'
Si
pas
d'erreur,
on
continue
le
traitement
elseif
err
<
>
9
then
'
--------------------------------------------------------------------------------------
'
chemin
vers
le
dossier
MESFICHIERS
'
pour
enregistrer
les
fichiers
uploades
(dossier
deprotege
=
chmod
777)
'
(fonction
desactivee
ici)
'
cheminlong
=
Server.MapPath(".\MESFICHIERS")
&
"\"
%>
<
br
/
>
<
br
/
>
<
b
>
Les DONNEES : (<%
=
MonUPLOAD.
Form
.
Count
%>
)<
/
b
>
<
br
/
>
<
br
/
>
<%
'
--------------------------------------------------------------------------------------
'
traitement
des
DONNEES
'
--------------------------------------------------------------------------------------
i=
1
while
(
i <
=
MonUPLOAD.
Form
.
Count
)
response
.
write
"
Name
:
"
&
MonUPLOAD.
Form
(
i).
Name
&
"
-
"
response
.
write
"
Values
:
"
&
MonUPLOAD.
Form
(
i).
Values
&
"
<br
/>
"
i =
i +
1
wend
%>
<
br
/
>
<
br
/
>
<
b
>
Les FICHIERS : (<%
=
MonUPLOAD.
Files
.
Count
%>
)<
/
b
>
<
br
/
>
TotalBytes : <%
=
MonUPLOAD.
Files
.
TotalBytes
%>
<
br
/
>
<
br
/
>
<%
'
--------------------------------------------------------------------------------------
'
Traitement
des
FICHIERS
'
--------------------------------------------------------------------------------------
for
each
Fichier in
MonUPLOAD.
Files
if
not
fichier.
IsMissing
then
'
seulement
si
le
champ
a
ete
renseigne
response
.
write
"
Name
:
"
&
Fichier.
Name
&
"
<br
/>
"
response
.
write
"
FileName
:
"
&
Fichier.
FileName
&
"
<br
/>
"
response
.
write
"
FileExt
:
"
&
Fichier.
FileExt
&
"
<br
/>
"
response
.
write
"
FilePathName
:
"
&
Fichier.
FilePathName
&
"
<br
/>
"
response
.
write
"
ContentType
:
"
&
Fichier.
ContentType
&
"
<br
/>
"
response
.
write
"
ContentDisp
:
"
&
Fichier.
ContentDisp
&
"
<br
/>
"
response
.
write
"
Size
:
"
&
Fichier.
Size
&
"
<br
/>
"
response
.
write
"
TypeMIME
:
"
&
Fichier.
TypeMIME
&
"
<br
/>
"
response
.
write
"
SubTypeMIME
:
"
&
Fichier.
SubTypeMIME
&
"
<br
/>
"
response
.
write
"
IsMissing
:
"
&
Fichier.
IsMissing
&
"
<br
/>
"
response
.
write
"
BinaryData
:
"
&
Fichier.
BinaryData
&
"
<br
/><br
/>
"
'
-----------------------------------------
'
enregistrement
dans
le
dossier
MESFICHIERS
'
(fonction
desactivee
ici)
'
Fichier.SaveAs
cheminlong
&
Fichier.FileName
end
if
next
'
--------------------------------------------------------------------------------------
'
Fermeture
de
l
objet
:
set
MonUPLOAD =
Nothing
'
--------------------------------------------------------------------------------------
end
if
'
fin
si
pas
d'erreur
%>
<
/
body
>
<
/
html
>
Remarque : "On Error Resume Next"
Cette instruction est dangereuse dans un code mal géré.
En effet, un bout de code pourrait provoquer des erreurs entrainant le plantage de l'application.
Elle ne devrait être utilisée que sur une section très précise du code risquant de lever une erreur.
Une fois la section dépassée, il faut utiliser l'instruction "On error goto 0" afin de mettre fin à l'ignorance des erreurs.
VI. Conclusion▲
Le composant ASPSmartUpload est gratuit.
Cependant, l'éditeur de ce composant "ne répond plus" : il n'est donc plus développé, ni supporté par son éditeur.
1 commentaire