J'ai rencontré un tel problème lors de l'utilisation d'ASP pour créer une page Web pour une certaine unité. Le système MIS précédent de l'unité enregistrait certains fichiers Word sous forme de flux d'octets dans la base de données. L'utilisateur me demande désormais d'utiliser ASP pour extraire ces fichiers Word. données de la base de données extraites et affichées sur la page Web. Au début, j'ai naturellement pensé à créer un fichier temporaire sur le serveur, puis à ajouter un lien vers le fichier temporaire dans la page Web. Cependant, cette méthode augmentera considérablement la charge sur le serveur, et comment garantir que le fichier temporaire. utilisé par un client spécifique est garanti sur le service. Les fichiers ne sont pas écrasés par les fichiers utilisés par d'autres clients, et comment supprimer les fichiers après leur transfert à l'utilisateur. Ces problèmes sont difficiles à résoudre en pratique. Alors, existe-t-il une meilleure façon ?
Pour cette raison, j'ai soigneusement vérifié le livre de référence ASP et découvert que l'objet Response possède un attribut appelé contenttype, qui définit le type MIME du contenu envoyé par le serveur au client. Le nom complet de MIME est MultiPurpose Internet Mail Extensions, qui est une extension de messagerie Internet polyvalente. Nous savons que dans la programmation Web, nous pointons parfois un lien hypertexte vers un fichier Word ou Excel. Lorsque l'utilisateur clique sur le lien, le navigateur appellera automatiquement la méthode correspondante pour ouvrir le fichier. La raison pour laquelle cela est possible est qu'après l'installation d'Office sur la machine de l'utilisateur, le type de ressource MIME correspondant sera enregistré dans le navigateur. Par exemple, le type MIME d'un fichier Word est Application/msword (le premier est un type MIME et le second est une sous-classe MIME) et le type de ressource MIME d'un fichier Excel est Application/msexcel. En fait, toutes les ressources que le navigateur peut gérer ont des types de ressources MIME correspondants. Par exemple, le type MIME des fichiers HTML est Text/html et le type MIME des fichiers JPG est Image/JPG. Lors de l'interaction avec le serveur, le navigateur détermine le type de traitement à effectuer en fonction du type MIME des données reçues. Pour les fichiers tels que HTML et JPG, le navigateur les ouvrira directement. Pour les fichiers tels que Word et Excel. , le navigateur ne peut pas les ouvrir tout seul. Le fichier s'ouvre en appelant la méthode correspondante. Pour les fichiers qui ne sont pas marqués d'un type MIME, le navigateur devine son type en fonction de son extension et du contenu du fichier. Si le navigateur ne peut pas le deviner, il le transmet en tant que application/octet-stream. Pour comprendre les types MIME de divers fichiers, veuillez les visualiser dans Win98 Poste de travail->Affichage->Options des dossiers->Types de fichiers.
J'ai donc eu une idée et j'ai pensé que dans ASP, je pourrais d'abord extraire les données WORD sous forme de flux d'octets, puis marquer son attribut contenttype comme Application/msword, puis l'envoyer au client une fois que le client a reçu cette ressource. tapera MIME, appellera automatiquement Word sur l'ordinateur client (bien sûr, le principe est que Word est installé sur l'ordinateur client, sinon il sera traité comme une ressource non reconnue, invitant l'utilisateur à l'enregistrer au lieu de l'ouvrir) pour ouvrez-le. Les résultats des tests sont très bons, la méthode est simple et rapide, et le navigateur utilise le mode intégré (similaire au mode OLE) pour l'ouvrir dans IE5, et l'effet est encore meilleur. Voici le contenu du programme.
Supposons que le nom de la table est tab_word. La table contient deux champs. L'un est un entier nommé id, qui est utilisé comme identifiant unique des données Word. L'autre est un type Blob nommé worddata, qui stocke les données Word. Nous souhaitons maintenant afficher le contenu du fichier Word avec l'ID égal à 1 sur la page. Le programme ASP est le suivant :
< %
' conn - la connexion à la base de données créée
'rs -- ensemble de résultats
rs = conn.execute(sélectionner
worddata de tab_word où id = 1)
réponse.contenttype = Application/msword
réponse.writebinary(rs(worddata))
'Veillez à envoyer les données dans le jeu de résultats directement en utilisant writebinary, n'utilisez pas de variables
'Recevez ces données, sinon le système signalera une erreur
%>
En utilisant des méthodes similaires, vous pouvez également traiter Excel, Bmp et bien d’autres types de données.