La fabrication de fichiers à partir du navigateur est un moyen simple de passer des fichiers des clients vers le serveur. Depuis le navigateur de troisième génération Netscape et Microsoft, la plupart des navigateurs peuvent télécharger des fichiers à partir du serveur sans avoir besoin de fournir aux utilisateurs des méthodes d'accès ou des logiciels spéciaux.
Certains composants ASP sont conçus pour les fichiers, par exemple ::
Posting Acceptor
(Partie de Microsoft Siteserver),
Aspsmartupload (Advantys),
aspupload (persistsSoftware),
Artisants SA-FileUpsoftware)
Le début de cet article vous indiquera des informations sur la création de ces composants, et ces composants utilisent généralement VB, C ++ ou Java.
Le problème de ces composants est qu'ils font partie de produits en troisième partie plutôt que de l'ASP standard. En tant que composant de troisième partie, l'installation doit être installée sur le serveur. Cela signifie que la DLL doit être copiée et enregistrée sur le serveur. La plupart des systèmes d'hébergement ne sont pas autorisés à effectuer de tels paramètres sur leurs serveurs car les problèmes de configuration (en particulier les hôtes virtuels) peuvent se produire. Le deuxième inconvénient est que la plupart d'entre eux ne sont pas gratuits.
Par conséquent, je dois écrire le code VBScript pour résoudre le problème de téléchargement du fichier. Ce n'est pas un choix inévitable, car VBScript est un langage de script, qui ne peut utiliser que le type de données des variantes, et ne peut pas fournir de nombreuses fonctions intégrées de gestion des données binaires et du tableau d'octets.
Pour comprendre le processus de téléchargement, nous devons d'abord savoir que les données sont envoyées du navigateur au serveur avec le protocole HTTP. Cela signifie que la soumission de formulaire de "multipart / formulaire de forme" (multi-parties / format-données) est soumise.
Télécharger le formulaire
Dans des circonstances normales, utilisez le formulaire HTML pour transmettre les données du navigateur vers le serveur. Ce formulaire peut contenir des domaines de texte, des boîtes d'inspection, des boutons et un contrôle de type de fichier des fichiers téléchargés. L'utilisateur remplit et soumet ce tableau au serveur avec ses propres données.
L'attribut Activerype dans l'élément de table spécifie le type de contenu codé par l'ensemble de données de table codé sur le serveur. La valeur par défaut de l'attribut ENCTYPE est "Application / X-WWW-Form-Urlencoded", mais lors de la transmission d'une grande quantité de texte au serveur, y compris des données avec des caractères non ASCII ou des numéros binaires, ce type par défaut ne peut pas être compétent. À l'heure actuelle, le type de contenu "multipart / form-data" doit être utilisé lorsque le fichier télécharge le formulaire.
Une information "Multipart / Form-Data" contient une série de composants.
Une tête de contenu, la valeur de "formulaire de formulaire"; un nom (nom) qui spécifie le nom de contrôle.
Pour un contrôle de type de fichier, une pièce peut contenir plus d'informations:
Les attributs de nom de fichier (fichier) du chemin d'origine et du nom du fichier sont stipulés sur le client;
Suivez le contenu binaire ou texte de contrôle derrière ces têtes.
L'exemple suivant illustre le codage de "Multipart / Form-Data".
Si ce formulaire est soumis, vous pouvez lire ces demandes sur le serveur:
----------------------------- 7CF87224D2020A
Disposition de contenu: formulaire de forme; name = "e-mail"
[Protégé par e-mail]
----------------------------- 7CF87224D2020A
Disposition de contenu: formulaire de formulaire;
Type de contenu: image / pjpeg
----------------------------- 7CF87224D2020A
Disposition de contenu: format-data;
soumettre une requête
----------------------------- 7CF87224D2020A--
Lorsque ce contenu est transmis en réponse au client, il sera affiché. Request.binaryread et réponse.binarywrite Méthode Lire et écrire des données binaires.
</ Pour cent
Réponse.binarywrite (request.binaryRead (request.totalbytes))
%>
Vous pouvez voir la division de chaque partie de la réponse:
----------------------------- 7CF87224D2020A
La dernière ligne de limite suit '-'.
Chaque contrôle a une disposition du contenu. La reconnaissance de l'attribut de nom est contrôlée par la table HTML (e-mail, blob et entre. Pour un contrôle de type de fichier (blob),
Le nom de fichier fait également partie de l'en-tête de la chair de tête, et l'en-tête de type contenu donne le type de données binaires de contenu.
Script téléchargé
Tous les contenus ci-dessus doivent être liés. Ceci est très évident dans VB ou C ++ car il existe de nombreux objets et méthodes pour cela. Dans VBScript, certaines fonctions fournies par la langue doivent être utilisées et le problème de la chaîne variable codée à double octet utilisé dans VBScript doit être résolu.
Fonction VBScript
Les données d'origine sont un format binaire, de sorte que la fonction VBScript conçue pour la gestion des données binaires doit être utilisée. Parce que nous considérons les données d'origine comme une chaîne d'octets, les fonctions MIDB, INSTRB et LENB sont utiles. Mais évitez la chaîne classique de VBScript, car ce sont une chaîne codée à double byte, qui ne convient pas pour se décomposer en octets simples.
Ce sont les seules fonctions utilisées pour décomposer les octets dans la fonction VBScript. Une méthode est également nécessaire pour obtenir une chaîne codée à double byte à partir des données décomposées afin que vous puissiez utiliser la chaîne dans le codage VBScript. Afin d'utiliser la chaîne comme une variable indépendante dans instantb, une fonction est nécessaire pour convertir la chaîne à double byte en une chaîne unique.
Pour moi, j'ai écrit deux fonctions, getString () et GetByTestring (), puis je l'ai expliqué plus tard.
structure
Les données décomposées sont stockées dans l'objet du dictionnaire VBScript. L'objet dictionnaire est l'objet de table de hachage, qui stocke (clé, élément). Il fait partie de VBScript et ASP2.0.
Définissez le premier objet de dictionnaire "uploadRequest". Cet objet contient tous les contrôles soumis par la table de téléchargement. La clé est le contrôle du contrôle, et l'élément est les informations de contrôle contenues dans l'objet:
"ControlName1", Dictionary Control1
"ControlName2", Dictionary Control2
Représentant un objet de dictionnaire contrôlé contient la paire suivante (clé, élément):
"Valeur", chaîne ou contenu binaire
"Nom de fichier", nom du fichier téléchargé
"ContentType", ContentType du fichier téléchargé
En combinant, il y a les exemples suivants:
uploadRequest: "Email", uploadControl 1: "Value", [e-mail protégé]
"Blob", uploadControl 2: "FileName", c: /upload/200902/file.gif "ContentType":
Image / gif "valeur": gif89ai?
Cet objet est très utile pour l'accès futur et l'utilisation de données.
panne
Voici le code de contrôle de décomposition, de lecture et de téléchargement d'enregistrements. Ce processus est complété avec le programme "BuilpoLadRequest".
Sub BuiltuploadRequest (RequestBin)
Tout d'abord, vous devez trouver la ligne de division.
'Obtenez la limite posbeg = 1 possend = instrb
bouffon
|||