Utiliser la technologie WEB pour mettre en œuvre un système de gestion avec une structure B/S (navigateur/serveur) est la tendance de développement de la bureautique. Les systèmes de gestion basés sur la technologie WEB se sont développés rapidement ces dernières années car ils ont un cycle de développement court ; ils sont indépendants des plateformes utilisateur ; ils sont faciles à mettre en œuvre des applications interactives et peuvent collecter, traiter et publier des informations de manière rapide et efficace ; La technologie ASP est progressivement devenue l'outil privilégié pour développer des systèmes de gestion en raison de sa grande efficacité de développement, de sa bonne interactivité et de sa forte sécurité.
De nombreuses applications basées sur le WEB impliquent des opérations de téléchargement de fichiers. Les technologies de téléchargement de fichiers courantes incluent : basées sur le protocole HTTP ; basées sur des composants de téléchargement de fichiers développés par VB (ou DELPHI et d'autres langages de programmation basés sur la technologie de base de données, etc.) ; Ces méthodes nécessitent généralement que les programmeurs maîtrisent en même temps la technologie WEB, la technologie des bases de données ou la technologie CGI ou la technologie des composants, et ont des exigences plus élevées pour les programmeurs. L'utilisation de la technologie ASP pour implémenter directement la fonction de téléchargement de fichiers que cet article présentera nécessite uniquement aux programmeurs de maîtriser une seule technologie ASP, ce qui réduit considérablement la difficulté de programmation.
Comparaison de plusieurs technologies de téléchargement de fichiers
1. Basée sur le protocole HTTP
Cette méthode nécessite que les programmeurs utilisent des logiciels tiers, tels que DELPHI, VB, etc., pour effectuer d'abord la programmation du protocole HTTP dans l'application, puis empaqueter le contenu du fichier à télécharger au format du protocole HTTP, et envoie enfin un message de demande de téléchargement au serveur WEB pour réaliser le téléchargement du fichier. Étant donné que DELPHI et VB ne peuvent pas écrire de programmes réseau WEB complets et ne peuvent écrire que de petites applications WEB, cette méthode n'est utilisée que pour les applications réseau aux fonctions limitées.
2. Composant de téléchargement de fichiers développé sur la base de VB (ou DELPHI, etc.)
Cette méthode utilise le langage de programmation VB (ou DELPHI, etc.) pour développer des composants de serveur ASP afin d'implémenter des services de téléchargement de fichiers spécifiques. Il utilise d'abord la fonction de formulaire ASP pour télécharger des fichiers (format binaire) du client vers le serveur, puis utilise des composants développés en VB pour traiter les fichiers binaires en fichiers pouvant être lus et écrits normalement. Cette méthode oblige les programmeurs non seulement à maîtriser le langage ASP, mais également à utiliser des langages tiers tels que VB pour la programmation des composants, ce qui augmente la difficulté de développement.
3.
Cette méthode est similaire à la méthode précédente basée sur la technologie des bases de données. La différence réside dans le traitement des fichiers binaires téléchargés. Il utilise une base de données pour enregistrer les fichiers binaires. Les petites et les grandes bases de données fournissent des types de données pour stocker des données binaires. Stockez simplement les données dans les champs correspondants dans la méthode Append Chunk. Bien que cette méthode soit simple et réalisable, car la taille du fichier téléchargé à chaque fois est différente, elle entraînera un gaspillage important d'espace dans la base de données et réduira la vitesse d'accès aux données et le fichier ne pourra être téléchargé que dans l'environnement d'accès à la base de données. causant de gros désagréments.
Exemple d'analyse
Cependant, l'utilisation de la technologie ASP pour implémenter directement la fonction de téléchargement de fichiers nécessite uniquement que le programmeur maîtrise une seule technologie ASP, ce qui
réduit considérablement la difficulté de programmation. Ci-dessous, nous présenterons comment utiliser cette méthode à travers un exemple.
1. Formulaire de téléchargement de fichiers
Vous devez d'abord rédiger un formulaire pouvant fournir une fonction de téléchargement de fichiers. Le programme est le suivant :
<Form action="upload.asp" method=post enctype="multipart/form-data">.
Télécharger le fichier :<Input type=file name=file1><br>
<input type=submit name=upload value="Télécharger">
</form>
Parmi eux, le paramètre enctype est utilisé pour définir la méthode d'encodage MIME du formulaire lors du téléchargement d'un fichier (ou contenant une zone de texte), son attribut doit être défini sur "multipart/form-data" ; asp est le côté serveur. Le programme ASP qui traite le flux de fichiers binaires reçu sera présenté plus loin dans cet article.
2. Analyse du format du fichier téléchargé
Avant de traiter le fichier, nous devons d'abord comprendre le format spécifique du fichier téléchargé. Nous pouvons visualiser son code binaire en écrivant le programme ASP simple suivant :
<%.
filesize=Request.TotalBytes 'Obtenir la taille du fichier téléchargé
filedata=Request.BinaryRead(filesize) 'Obtenir les données binaires du fichier téléchargé
Response.BinaryWrite filedata 'Afficher les données binaires sur le navigateur
%>
Analysez le code binaire du fichier téléchargé affiché sur le navigateur et constatez que le code se compose de quatre parties (si plusieurs fichiers ou zones de texte sont téléchargés en même temps, les codes sont classés dans l'ordre de téléchargement, avec le même format), et le contenu de chaque partie est séparé par des symboles de retour chariot et de saut de ligne :
1) La première partie (marque de départ)
--------------------------7d329631b04d4
2) Partie 2 (Description du fichier)
Disposition du contenu : form-data ; name="file1" ; "C:Documents and SettingsAdministratorMy DocumentsInvitation.doc" Content-Type : application/msword
dans Because. , nous pouvons obtenir le nom du fichier et le chemin absolu du fichier téléchargé, ainsi que le type de fichier. Ces informations sont essentielles pour enregistrer correctement le fichier.
3) La troisième partie (contenu du fichier)
est le contenu binaire du fichier, omis.
4) Partie 4 (marque de fin)
--------------------------7d329631b04d4
Regardons le contenu de la partie 1 et de la partie 4, "-- --------------------------7d329631b04d4" (la valeur est différente à chaque téléchargement) joue le rôle de séparateur, Il marque le début et la fin d'une donnée (lorsqu'il y a plusieurs téléchargements). En ce qui concerne les informations nécessaires à la sauvegarde du fichier, nous devons d'abord obtenir le nom du fichier à partir du "nom de fichier" de la deuxième partie des données, puis localiser correctement la position de départ du fichier et enfin utiliser la technologie ASP. pour enregistrer le fichier binaire avec son nom de fichier d'origine. Si plusieurs contenus (tels que plusieurs zones de texte et fichiers) sont téléchargés en même temps, ils sont traités de la même manière. Chaque partie du contenu est incluse dans le délimiteur, mais les zones de texte et les fichiers sont exprimés de manière légèrement différente. . Cela peut être fait en analysant spécifiquement son code binaire pour comprendre.
3. Utilisez la technologie ASP pour implémenter le stockage de fichiers
et télécharger le traitement du code de fichier
1) Obtenez le code délimiteur D'
après l'analyse ci-dessus, nous savons déjà que le délimiteur joue un rôle important dans la division de plusieurs segments de données (y compris les zones de texte et divers types de fichiers). ) . Comme cela a été analysé précédemment, le séparateur apparaît avant le premier symbole de retour chariot et de saut de ligne. Par conséquent, le code délimiteur peut être obtenu via le programme suivant :
<%
newline=chrB(13) & chrB(10) 'newline représente le caractère binaire de retour chariot
filesize=Request.TotalBytes 'filesize est la taille du fichier téléchargé
filedata=Request.BinaryRead(filesize) 'filedata est les données binaires du fichier téléchargé
Divider=leftB(filedata,clng(instrb(filedata,newline))-1) 'divider est le diviseur
%>
Remarque : étant donné que tous les processus ici sont des bytecodes binaires, toutes les fonctions utilisent leurs versions binaires avec "b" ajouté.
2) Obtenir le contenu du fichier (ou de la zone de texte)
(1) Fonction préparatoire (convertir une chaîne binaire en chaîne)
Le contenu du fichier téléchargé n'a pas besoin de passer par le processus de conversion de binaire en chaîne et peut être enregistré directement . Cependant, si vous devez extraire le contenu de la zone de texte ou le nom du fichier, vous devez effectuer une conversion. Il est donc nécessaire d’écrire une fonction de conversion universelle adaptée aux caractères chinois. Voici le code de la fonction :
Fonction BtoS (bstr)
Si non Est Null (bstr) Alors
pour i = 0 à lenb(bstr) - 1
bchr = midb(bstr,i+1,1)
Si ascb(bchr)>127 Alors 'Les caractères chinois sont des doubles octets, donc deux caractères doivent être traités ensemble
temp = temp&chr(ascw(midb(bstr, i+2, 1)&bchr))
je = je+1
Autre
temp = temp&chr(ascb(bchr))
Fin si
suivant
Fin si
BtoS=température
Fonction de fin
(2) Obtenir le contenu du fichier (ou de la zone de texte).
Dans les applications WEB réelles, l'opération de téléchargement peut impliquer plusieurs contenus, tels que plusieurs zones de texte, plusieurs fichiers, etc. Les fichiers et les zones de texte se distinguent facilement. Les données du fichier contiennent la chaîne "filename=". Par conséquent, nous avons écrit la fonction générale suivante, qui peut être utilisée pour extraire à la fois le contenu du fichier et le contenu de la zone de texte (une conversion binaire est requise) :
Fonction getdata(byval data, byval diviseur, final) 'data représente une chaîne binaire diviseur représente la division ; le symbole ; final représente la position finale des données.
filename=chrb(102)&chrb(105)&chrb(108)&chrb(101)&chrb(110)&chrb(97)&chrb(109)&chrb(101)&chrb(61)&chrb(34) 'Binaire de la chaîne "nom de fichier" express
bncrlf=chrb(13)&chrb(10) 'Caractère de retour chariot binaire
startpos = instrb(data,divider)+lenb(divider)+lenb(bncrlf) 'Position de départ
endpos = instrb(startpos,data, diviseur)-lenb(bncrlf) 'Position finale
part1 = midb(data, startpos, endpos-startpos) 'Contenu entre deux séparateurs
firstline = midb(part1, 1, instrb(part1, bncrlf)-1) ' Paragraphe de description avant le contenu
If (instrb(firstline,filename)=0) Then 'S'il s'agit d'une zone de texte, récupérez le contenu de la chaîne de la zone de texte
stemp=midb(part1,instrb(part1,bncrlf&bncrlf)+lenb(bncrlf&bncrlf),lenb(part1)-instrb(part1,bncrlf&bncrlf)+lenb(bncrlf&bncrlf))
getdata=BtoS(stemp)
Sinon 'S'il s'agit d'un fichier, récupérez le contenu binaire du fichier
Getdata=midb (part1, instrb (part1, bncrlf&bncrlf)+lenb (bncrlf&bncrlf), lenb (part1)
-instrb(part1,bncrlf&bncrlf)+lenb(bncrlf&bncrlf))
Fin si
Final = endpos
Fonction de fin
Appelez cette fonction directement dans le programme pour obtenir le contenu du fichier (ou de la zone de texte) requis, comme indiqué ci-dessous :
<%
Contenu=getdata (données, diviseur, position)
%>
3) L'obtention du nom du fichier a déjà été analysée. Le champ "filename=" du flux de données du fichier téléchargé contient le nom et le chemin absolu du fichier. De manière générale, il suffit d'extraire le nom du fichier dans le chemin. Voici le code du programme :
<%
namepos=instrrev(B2S(firstline),chr(92)) 'firstline est les données de la partie description obtenues ci-dessus, chr(92)
exprimer"/"
filename=midb(firstline,namepos+1,lenb(firstline)-namepos-1) 'Obtenir le nom du fichier
%>
Utilisez ASP pour implémenter directement la fonction de téléchargement de fichiers.
Les programmeurs ASP traditionnels ne peuvent utiliser l'objet FILESYSTEMOBJECT que pour déplacer, copier, supprimer et autres opérations sur des fichiers texte (.txt). Si vous devez traiter des objets binaires, vous devez utiliser. celles présentées plus tôt dans cet article. Cependant, l'objet ADO.STREAM dans ASP peut désormais faire fonctionner des objets texte et des objets binaires en même temps (peut être téléchargé sur http://www.microsoft.com/data ), et vous pouvez l'utiliser pour implémenter directement le téléchargement de fichiers. fonction en ASP. Ci-dessous, nous présentons son processus de mise en œuvre.
1) Ouvrez l'objet STREAM.
Pour l'objet SREAM, si vous souhaitez enregistrer le fichier, vous devez enregistrer l'intégralité du contenu de l'objet. Par conséquent, nous devons créer deux (ou plus) objets STREAM, dont l'un est le flux de données source, qui reçoit les données binaires initiales ; l'autre est le flux de données de destination, qui reçoit les données traitées du flux de données source, et enfin enregistrer dans le fichier souhaité.
<%
set str=server.CreateObject("ADODB.Stream") 'str est le flux de données source
str.Mode=3 'Définit le mode ouvert, 3 est lisible et inscriptible
str.Type=1 'Définit le type de données, 1 est une donnée binaire
str.Ouvrir
set desc=server.CreateObject("ADODB.Stream") 'desc est le flux de données cible
desc.Mode=3
Desc.Type=1
desc.Ouvrir
%>
2) Copie du contenu entre les objets STEAM
Dans cette partie, vous devez localiser le début du fichier dans le flux de données source et connaître la longueur du contenu du fichier avant de pouvoir copier correctement le fichier dans le flux de données de destination et enregistrer le fichier. Le code du programme est le suivant :
<%
formdata=Request.BinaryRead(Request.TotalBytes) 'formdata est tout le contenu téléchargé
str.Write formdata 'Attribuer un flux de données source
str.position=count-lenb(result)-2 'la position pointe vers le début du fichier
str.copyto desc, lenb(filecotent) 'lenb(filecontent) représente la longueur du fichier
desc.SaveToFile fullpath,2 'Enregistre le fichier avec le chemin et le nom spécifiés par fullpath
%>
3) Fermez l'objet STEAM.
Une fois la programmation terminée, l'objet STEAM doit être fermé et libéré, comme indiqué ci-dessous :
<%
Desc.Fermer
Définir desc=rien
Rue Fermer
Définir STR = rien
%>
Résumé
Cet article fournit une méthode pour implémenter directement le téléchargement de fichiers à l'aide d'ASP, qui a été bien appliquée dans le système de gestion de l'information développé par cette unité. La pratique a prouvé que cette méthode est plus simple et plus efficace que plusieurs méthodes traditionnelles de téléchargement de fichiers.