http://www.delphibbs.com/delphibbs/dispq.asp?lid=1711676
来自:小雨哥, 时间:2003-4-4 0:50:00, ID:1737109
看 http://www.wushuang.net/ 里的 http://www.wushuang.net/develop/upfile.zip
来自:ChildSound, 时间:2003-4-4 13:48:00, ID:1737211
具体的解决方案:
(我正在为一个学校做的远程教育服务)
Word教材文件以字节流的形式保存在数据库中,用ASP将这些Word文件数据从数据库中取出并在网页中显示
前提:服务器/客户端装有Word97以上版本(或者相关组件)
工作原理:
利用 Response对象contenttype的属性,它定义服务器发送给客户端内容的MIME类型。MIME全称Multipurpose Internet Mail Extensions,即多功能Internet邮件扩展。定义了MIME后将超链接指向一个Word或Excel文件,当用户点击这个链接时浏览器会自动调用OLE方法将这个文件打开。之所以能做到这点就是因为用户机器上安装office后会在浏览器中注册对应的MIME资源类型。比如说word文件的MIME类
型是Application/msword(前者是MIME类型,后者是MIME子类),Excel文件的MIME资源类型是Application/msexcel。事实上,凡是浏览器能处理的所有资源都有对应的MIME资源类型,比如说html文件的MIME类型是Text/html,JPG文件的MIME类型是Image/JPG。在与服务器的交互中,浏览器就是根据所接受数据的MIME类 型来判断要进行什么样的处理,对html、JPG等文件浏览器直接将其打开,对Word、Excel等浏览器自身不能打开的文件则调用相应方法打开。对没有标记MIME类型的文件,浏览器则根据其扩展名和文件内容猜测其类型。如果浏览器无法猜出 ,则将它作为application/octet-stream。要了解各种文件的MIME类型,我的电脑->查看->文件夹选项->文件类型 中查看。
在ASP中可以先将WORD数据以字节流方式取出,接着 将其conntenttype属性标记为Application/msword,再将它发送给客户机,客户 机收到这个资源后,根据其MIME类型,会自动调用客户机上的Word(当然,前提是客户机上装了Word,否则会将其作为一个不能识别的资源,提示用户保存起来 ,而不是打开它)将它打开。经试验效果很好,方法简单且速度很快,而且在IE 5中浏览器使用内嵌方式(类似于OLE方式)打开,效果更佳。以下是程序内容。
假设有一些Word文件以字节流的形式保存在数据库中,用ASP将这些Word文件数据从数据库中取出并在网页中显示出来
假设表名tab_word,表中有两个字段,一个是整型,名id,用作Word数据的
唯一标识,另一个Blob型,名worddata,里面存放Word数据。现在要在页面上显
示id等于1的Word文件内容, ASP程序如下:
<%
' conn - 已创建的数据库连接
' rs -- 结果集
rs = conn.execute("select
worddata from tab_word where id = 1"
response.contenttype = "Application/msword"
response.writebinary(rs("worddata"
)
'注意将结果集中的数据直接用writebinary发送出去,不要用变量
'接收这个数据,否则系统会报错
%>
你也可以通过DELPHI写WEB服务来封装以上ASP代码
客户端以DLL的形式调用