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")

 
Sélectionnez

<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


 
Sélectionnez

<%
' 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.


 
Sélectionnez

<%
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 :

 
Sélectionnez

<% 
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")

 
Sélectionnez

<%= 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


 
Sélectionnez

<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 Donner une note à l'article (4)