Vous êtes sur la page 1sur 10

ASP - composant ASPSmartUpload

par Jrme Raux (Pages de jreaux62)


Date de publication : 30 mars 2009 Dernire mise jour :

Le composant ASPSmartUpload (gratuit) permet de grer les tlchargements de FICHIERS ou de DONNEES en Upload ou en Download partir d'un serveur hte.

ASP - composant ASPSmartUpload par Jrme Raux (Pages de jreaux62)

I - Actions & Proprits............................................................................................................................................... 3 II - CREATION de l'OBJET..........................................................................................................................................4 III - COLLECTION FILES............................................................................................................................................ 6 IV - COLLECTION FORM........................................................................................................................................... 7 V - EXEMPLE d'utilisation des fonctions.................................................................................................................... 8 VI - Conclusion.......................................................................................................................................................... 10

-2Les sources prsentes sur cette pages sont libre de droits, et vous pouvez les utiliser votre convenance. Par contre cette page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 - Jrme Raux. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts. Droits de diffusion permanents accords developpez LLC.

ASP - composant ASPSmartUpload par Jrme Raux (Pages de jreaux62)

I - Actions & Proprits


Ce composant puissant et gratuit offre une gestion avance des transferts de fichiers en flux montant ou descendant, avec notamment un contrle des fichiers en Upload, la restriction sur leurs caractristiques en Download ou encore la gestion des formulaires en mode mixte. Cependant, l'diteur de ce composant "ne rpond plus" : il n'est donc plus dvelopp, ni support par son diteur. Tlcharger le composant ASPSmartUpload : Tlcharger 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 rcuprer les champs de donnes (type="text") avec request.form("...") ! On doit passer par le composant AspSmartUpload. Le composant ASPSmartUpload comporte un objet principal, appel SmartUpload, lui-mme comprenant deux collections : - collection Files (pour les fichiers : type="file") - collection Form (pour les donnees : type="text", )

-3Les sources prsentes sur cette pages sont libre de droits, et vous pouvez les utiliser votre convenance. Par contre cette page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 - Jrme Raux. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts. Droits de diffusion permanents accords developpez LLC.

ASP - composant ASPSmartUpload par Jrme Raux (Pages de jreaux62)

II - CREATION de l'OBJET

<% ' Cration de l objet : On Error Resume Next Set MonUPLOAD = Server.CreateObject(&quot;aspSmartUpload.SmartUpload&quot;) ' ... ' ... - proprits - actions - traitement files et data - ... ' ... ' Fermeture de l objet ( la fin du traitement) : Set MonUPLOAD = Nothing %>

PROPRIETES : On peut spcifier des proprits ou restrictions pour l'Upload. PROPRIETES : =2000000 taille maximale totale autorise pour l'upload de fichiers (en octets). MonUPLOAD.MaxFileSize =1000000 taille maximale autorise par fichier lors de l'upload (en octets). MonUPLOAD.AllowedFilesList ="gif,jpg,jpeg" liste des extensions des fichiers autorises pour l'upload. MonUPLOAD.DeniedFilesList ="exe,php,asp,txt" liste des extensions des fichiers refuses lors de l'upload. MonUPLOAD.DenyPhysicalPath =true (par dfaut = false) empche l'enregistrement de fichiers dans des rpertoires autres que les rpertoires virtuels. MonUPLOAD.ContentDisposition ="attachment;" ou ="inline;" ou ="" modifie le content-disposition. MonUPLOAD.DownloadBlockSize =4096 taille des blocs d'une source de donnes lues. MonUPLOAD.TotalBytes retourne la taille totale des donnes transmises (en octets). MonUPLOAD.BinaryData(indice) retourne l'octet correspondant l'indice du tableau contenant les donnes transmises. MonUPLOAD.TotalMaxFileSize ACTIONS : Les diffrentes actions de traitement du formulaire. ACTIONS : excute le transfert en upload du formulaire. sauvegarde tous les fichiers transmis. (aprs MonUPLOAD.UpLoad) "c:\temp\myfile.txt", "text/plain", "newfile.txt"

MonUPLOAD.UpLoad MonUPLOAD.Save ou MonUPLOAD.DownloadFile

-4Les sources prsentes sur cette pages sont libre de droits, et vous pouvez les utiliser votre convenance. Par contre cette page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 - Jrme Raux. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts. Droits de diffusion permanents accords developpez LLC.

ASP - composant ASPSmartUpload par Jrme Raux (Pages de jreaux62)

MonUPLOAD.DownloadField

MonUPLOAD.FieldToFile

MonUPLOAD.UploadInFile

excute le transfert en download d'un Fichier. myRecordSet("FILE"), "text/plain", "newfile.txt" tlcharge un fichier partir d'une base de donnes. myRecordSet.Field("FILE"), "c:\temp \myFile.txt" cre un nouveau fichier contenant les donnes d'un champ d'une table d'une base de donnes. "c:\temp\myData.txt" enregistre le formulaire complet dans un Fichier.

-5Les sources prsentes sur cette pages sont libre de droits, et vous pouvez les utiliser votre convenance. Par contre cette page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 - Jrme Raux. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts. Droits de diffusion permanents accords developpez LLC.

ASP - composant ASPSmartUpload par Jrme Raux (Pages de jreaux62)

III - COLLECTION FILES


(rcupration 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 %>

Fichier.Name Fichier.FileName Fichier.FileExt Fichier.FilePathName Fichier.ContentType Fichier.ContentDisp Fichier.Size Fichier.ContentString Fichier.TypeMIME Fichier.SubTypeMIME Fichier.IsMissing Fichier.BinaryData

FONCTIONS de la Collection Files : retourne le nom du champ du formulaire. retourne le nom du fichier saisie par l'utilisateur. retourne l'extension du fichier saisie par l'utilisateur. retourne le chemin du fichier saisie par l'utilisateur. retourne le Content-Type du fichier saisie par l'utilisateur. retourne le Content-Disposition du formulaire. retourne la taille du Fichier. retourne le contenu du fichier dans une chane de caractres. retourne le type MIME du fichier saisie par l'utilisateur. retourne le sous-type MIME du fichier saisie par l'utilisateur. retourne True si l'utilisateur n'a pas saisi de Fichier. retourne l'octet correspondant l'indice du tableau contenant les donnes transmises.

Fichier.SaveAs Fichier.FileToField

ACTIONS de la Collection Files : sauvegarde le fichier sur le disque. sauvegarde le contenu d'un fichier dans le champ d'une table d'une base de donnes.

-6Les sources prsentes sur cette pages sont libre de droits, et vous pouvez les utiliser votre convenance. Par contre cette page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 - Jrme Raux. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts. Droits de diffusion permanents accords developpez LLC.

ASP - composant ASPSmartUpload par Jrme Raux (Pages de jreaux62)

IV - COLLECTION FORM
(rcupration des donnes 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 donnes :
<% 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") %>

-7Les sources prsentes sur cette pages sont libre de droits, et vous pouvez les utiliser votre convenance. Par contre cette page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 - Jrme Raux. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts. Droits de diffusion permanents accords developpez LLC.

ASP - composant ASPSmartUpload par Jrme Raux (Pages de jreaux62)

V - EXEMPLE d'utilisation des fonctions


Exemple avec 2 champs "file", 2 champs "text", 1 champ "textarea" Rsultats : affichage des valeurs de diffrentes 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 dsactive 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 %> -8Les sources prsentes sur cette pages sont libre de droits, et vous pouvez les utiliser votre convenance. Par contre cette page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 - Jrme Raux. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts. Droits de diffusion permanents accords developpez LLC.

ASP - composant ASPSmartUpload par Jrme Raux (Pages de jreaux62) <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 gr. En effet, un bout de code pourrait provoquer des erreurs entrainant le plantage de l'application. Elle ne devrait tre utilise que sur une section trs prcise du code risquant de lever une erreur. Une fois la section dpasse, il faut utiliser l'instruction "On error goto 0" afin de mettre fin l'ignorance des erreurs.

-9Les sources prsentes sur cette pages sont libre de droits, et vous pouvez les utiliser votre convenance. Par contre cette page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 - Jrme Raux. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts. Droits de diffusion permanents accords developpez LLC.

ASP - composant ASPSmartUpload par Jrme Raux (Pages de jreaux62)

VI - Conclusion
Le composant ASPSmartUpload est gratuit. Cependant, l'diteur de ce composant "ne rpond plus" : il n'est donc plus dvelopp, ni support par son diteur.

- 10 Les sources prsentes sur cette pages sont libre de droits, et vous pouvez les utiliser votre convenance. Par contre cette page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 - Jrme Raux. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts. Droits de diffusion permanents accords developpez LLC.