Lorsque nous travaillons sur des projets Web, nous devons souvent utiliser la fonction du téléchargement de fichiers, mais le téléchargement de différents types de fichiers dans un environnement d'application basé sur un navigateur / serveur a toujours troublé les utilisateurs. Alors, quelle est la méthode d'ASP pour télécharger des fichiers?
un. Analyse du principe de mise en œuvre du téléchargement de fichiers basé sur ASP
Le principe de base est: utilisez la méthode BinaryRead de l'objet ADO Stream pour lire toutes les données du formulaire, intercepter les données de fichiers requises et les enregistrer dans des fichiers binaires.
Voici un exemple de la page de fichier de téléchargement (upload.htm):
< Html >< Body >< Form name = "upload" method = "post" EncType = "multipart / form-data" action = "upload.asp"> < entrée type = "file" name = "filename"> < entrée type = "soumide" value = "upload"> < / td> < / form> < / body> < / html>
L'objet de fichier est utilisé dans le programme, de sorte que les données d'origine lues en utilisant la méthode BinaryRead dans upload.asp n'est pas seulement les données du fichier sélectionné lui-même, mais contient également des descriptions du chemin, type, nom de domaine de la page de soumission et d'autres informations connexes sur le disque dur de l'utilisateur. De cette façon, nous devons extraire le contenu spécifique du fichier à partir de celui-ci. Selon l'analyse, la ligne de démarcation entre les informations d'en-tête des données et les données est de deux paires de ruptures de ligne de retour du chariot, et il y a également des informations séparant à la fin. Nous pouvons utiliser une méthode similaire pour obtenir des données de fichiers.
Dim FormData.Formsize, DataStart, ClStr, DivStRormSize = request.TotalBytesFormData = request.BinaryRead (Formsize) CLStr = Chrb (13) & Chrb (10) DataStart = instrb (formdata.clstr & clstr) + 4'4 sont deux longueurs de la ligne de retour de la ligne de retour de transport. DivStr = LeftB (formdata, instrb (formdata, clstr) -1) dataSize = instrb (dataStart + 1, formdata, divStr) -datastart-2formData = midb (formdata, dataStart, dataSize) FormData est le contenu du fichier.
Le traitement correspondant peut être effectué au besoin au milieu. Le travail final consiste à enregistrer le fichier. Il existe deux façons d'économiser: la première consiste à utiliser des méthodes de fonctionnement de fichiers binaires dans des programmes tels que VB ou VC, ajouter des bibliothèques de type appropriées au projet et enfin la compiler dans un fichier DLL et enregistrer le fichier DLL lors de l'utilisation. Le programme de stockage de fichiers est le suivant:
Fonction publique SaveFile (pathName as String) As String Dim Dim objContext As objectContext Dim objRequest As Demande Set OBJContext = GetObjectContext () Set ObjRequest = ObjContex Redim formdata (dataSize-1) formData = objRequest.binaryRead (dataSize) Clstr = chrb (13) & chrb (10) dataStart = instrb (formdata, clstr & Clstr) +4 divstr = LeftB (formdata, instrb (formdata, clstr) -1) datasize = install Formdata = midb (formdata, dataStart, dataSize) 'Créer un fichier binaire et écrire FormData pour ouvrir le chemin d'accès pour le binaire comme 1 put # 1 ,, formdata close # 1 savefile = "ok!" Fonction finale
La deuxième méthode consiste à utiliser la méthode de fonctionnement du fichier binaire fournie dans ADO Stream pour la terminer. L'instruction pour enregistrer le fichier est: streamobj.savetofile (nom de fichier, 2). Dans ce type d'opération, nous pouvons stocker les opérations pertinentes dans un fichier de classe. Lors de l'application, incluez simplement le fichier de classe dans le programme ASP. Pour des méthodes de traitement spécifiques, veuillez vous référer à l'introduction pertinente.
deux. Exemple de méthode d'implémentation de téléchargement de fichiers
Pour implémenter des téléchargements de fichiers, vous pouvez utiliser des composants ou des méthodes sans composants. Pour les classes de composants, telles que Microsoft Posting Acceptor (MPA for Short), il s'agit d'un composant de serveur gratuit publié par Microsoft. L'installation de ces composants est également plus pratique. Pour MPA de Microsoft, exécutez simplement ses fichiers d'installation. Pour le formulaire de composant DLL général, nous devons nous inscrire. Par exemple, pour utiliser AspCnup.dll, exécutez simplement RegSVR32 [Path /] Aspcnup.dll sur Window 2000, et le système invite que l'enregistrement est réussi, vous pouvez utiliser ce composant; Pour la classe sans composant, lorsque vous l'utilisez, incluez simplement les instructions suivantes dans le gestionnaire:
<! - # inclure file = "upload.inc" -> set upload = new upload_5xsoft 'créer un objet téléchargement
Pour les propriétés et les méthodes de fonctionnement, veuillez vous référer au manuel d'utilisation de ce composant.
Ce qui suit est le code source (upload.asp) pour télécharger certains types de fichiers à l'aide du composant aspcnup.dll à titre d'exemple:
<% @ lingots = "vbscript" set fileup = server.createObject ("aspcn.upload") fileup.maxsize = 200000 fileup.path = "d: / upfile" fileup.upload pour i = 0 à fileup.count fieldname = fileup.fieldname (i) if fileUp.fileType (champsname) = "zip" ou ileup.filetype (fieldname) = "rar" puis fileup.save fieldname end if Next set fileup = rien%>Le modèle d'application du navigateur / serveur se développe toujours rapidement. Dans ASP.NET nouvellement lancé de Microsoft, la fonction de téléchargement de fichiers a été intégrée, ce qui le rend très simple et pratique à utiliser. En tant que toute nouvelle technologie, ASP.NET n'est pas seulement une simple mise à niveau d'ASP. Il s'agit d'un tout nouveau cadre pour le développement Web, qui contient de nombreuses nouvelles fonctionnalités. ASP.NET fournit un code de structure plus facile à écrire et plus clair, et nous pourrons réutiliser et partager plus facilement, développant ainsi des programmes plus pratiques.
Ce qui précède est tout le contenu de cet article. J'espère que le contenu de cet article sera d'une aide à l'étude ou au travail de chacun. J'espère également soutenir la mauvaise chaîne de nouvelles technologies!