Я столкнулся с такой проблемой при использовании ASP для создания веб-страницы для определенного устройства. Предыдущая система MIS устройства сохраняла некоторые файлы Word в виде потоков байтов в базе данных. Теперь пользователь требует, чтобы я использовал ASP для извлечения этих файлов Word. данные из базы данных извлекаются и отображаются на веб-странице. Сначала я, естественно, думал о создании временного файла на сервере, а затем добавлении ссылки на временный файл на веб-странице. Однако этот метод сильно увеличит нагрузку на сервер, а также о том, как обеспечить сохранение временного файла. использование конкретным клиентом обеспечивается в сервисе. Файлы не перезаписываются файлами, используемыми другими клиентами, и как удалить файлы после их передачи пользователю. Эти проблемы трудно решить на практике. Так есть ли лучший способ?
По этой причине я внимательно проверил справочник ASP и обнаружил, что объект Response имеет атрибут contenttype, который определяет тип MIME контента, отправляемого сервером клиенту. Полное название MIME — Multiцелевые расширения почты Интернета, которые представляют собой многоцелевое расширение почты Интернета. Мы знаем, что в веб-программировании мы иногда указываем гиперссылку на файл Word или Excel. Когда пользователь щелкает ссылку, браузер автоматически вызывает соответствующий метод для открытия файла. Причина, по которой это возможно, заключается в том, что после установки Office на компьютер пользователя соответствующий тип ресурса MIME будет зарегистрирован в браузере. Например, тип MIME файла Word — Application/msword (первый — это тип MIME, а второй — подкласс MIME), а тип ресурса MIME файла Excel — Application/msexcel. Фактически, все ресурсы, которые может обрабатывать браузер, имеют соответствующие типы ресурсов MIME. Например, тип MIME файлов html — Text/html, а тип файлов JPG MIME — Image/JPG. При взаимодействии с сервером браузер определяет, какую обработку следует выполнить, на основе MIME-типа полученных данных. Для таких файлов, как html и JPG, браузер будет открывать их напрямую. Для таких файлов, как Word и Excel. , браузер не может открыть их сам. Файл открывается вызовом соответствующего метода. Для файлов, не помеченных типом MIME, браузер угадывает тип на основе расширения и содержимого файла. Если браузер не может его угадать, он передает его как application/octet-stream. Чтобы понять типы MIME различных файлов, просмотрите их в Win98 «Мой компьютер» -> «Вид» -> «Свойства папки» -> «Типы файлов».
Итак, у меня возникла идея, и я подумал, что в ASP я мог бы сначала извлечь данные WORD в виде потока байтов, затем пометить их атрибут contenttype как Application/msword, а затем отправить их клиенту. После того, как клиент получит этот ресурс, он. будет вводить MIME, будет автоматически вызывать Word на клиентском компьютере (конечно, предполагается, что Word установлен на клиентском компьютере, в противном случае он будет рассматриваться как нераспознанный ресурс, предлагая пользователю сохранить его, а не открывать) для откройте его. Результаты теста очень хорошие, метод простой и быстрый, а браузер использует встроенный режим (похожий на режим OLE), чтобы открыть его в IE5, и эффект еще лучше. Ниже приводится содержание программы.
Предположим, что имя таблицы — tab_word. В таблице есть два поля: одно — целое число с именем id, которое используется в качестве уникального идентификатора данных Word. Другое — это тип Blob с именем worddata, в котором хранятся данные Word. Теперь мы хотим отобразить на странице содержимое файла Word с идентификатором, равным 1. Программа ASP выглядит следующим образом:
<%
'conn - создано соединение с базой данных
'rs -- набор результатов
rs = conn.execute(выберите
worddata из tab_word, где id = 1)
response.contenttype = Приложение/мслово
response.writebinary(rs(worddata))
'Будьте осторожны, отправляя данные в наборе результатов напрямую с помощью writebinary, не используйте переменные
'Получите эти данные, иначе система сообщит об ошибке
%>
Используя подобные методы, вы также можете обрабатывать Excel, Bmp и многие другие типы данных.