分享
 
 
 

WEB环境中后台自动上传文件至数据库的实现

王朝other·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

概述

本文讲解了一个使用办公之星控件实现后台自动上传文件的例子,使用该方法没有选择文件步骤,可以在WEB环境下实现类似单机环境下点击保存文件的效果。

引言

为了在HTML网页中获得上传功能,在客户端我们可以使用如下格式的FORM:

<FORM NAME="myForm"

ACTION="TargetURL.asp"

ENCTYPE="multipart/form-data"

METHOD="post">

<INPUT TYPE="file" NAME="myFile">

<INPUT TYPE="submit" VALUE="Upload File">

</FORM>

这种方案在客户端和服务器端的使用都有很多限制。首先,我们必须使用POST方法,因为GET方法无法处理这样的表单数据。并且,没有什么方法可以在不使用表单的情况下引发一个POST动作。把数据发送给表单处理程序后,浏览器将会把处理程序作为新页面加载,然后使用者会看到一个不讨人喜欢的页面转换过程。

办公之星控件中的上传方案

需要按照如下步骤操作:

客户端:

将办公之星控件所编辑的文档保存至本地

利用HTTP协议将保存的临时文档发送给Web服务器

服务器端:

从Request对象中读出上传的二进制文档

读出二进制数据并且存储到数据库的BLOB型字段中。

利用办公之星控件可以在WEB环境下实现和WORD功能相当的图文混排以及字处理功能,但如何将所编辑的文档保存至服务器端?上述的方案似乎没有什么新东西。按照前言中的说明,file控件的value值为只读,一定存在选择文档在手动点击上传按钮的过程。是这样吗?先介绍二个办公之星控件接口方法:

1. SaveToTempFile(str filename)

将当前用办公之星控件编辑的文档保存至本地形成一个临时文件,参数filename为临时文件的文件名称。该方法会返回一个参数,这个参数表示临时文件的绝对路径。示例: SaveToTempFile("abc.ost")

2. UpLoadFile(str filepath,str operatorfile)

将本地指定文件上传至服务器端,参数filepath为本地待上传文件的绝对路径,operatorfile为服务器端用来接收上传文件流的文件名称。该方法会返回一个参数,提示操作过程中是否成功。示例:UpLoadFile("c:\abc.ost","http://www.oapro.com/save.asp")

看到这里,相信您已经明白了,办公之星控件已提供接口方法,将指定文件自动上传。下面给出客户端完整的代码:

<script language="vbscript">

Public Sub mnuFileSave_click()

dim str,strRet

'生成临时文件

str=OStar.SaveToTempFile("abc.ost")

'将临时文件上传

strRet=OStar.UpLoadFile(str,"http://www.oapro.com/save.asp")

'上传成功与否提示

alert(strRet)

End Sub

</script>

||||||上述页面中OStar为办公之星控件在页面中的操作对象名称。以下代码为服务器端如何处理上传文件并保存至数据库:

<%

' 定义变量和对象

dim sql

dim rs

dim UpFile

dim conn

dim connstr

dim db

'保存上传文件的数据库名称

db="db.mdb"

'取得上传的二进制数据

UpFile=Request.BinaryRead(Request.TotalBytes)

'建立数据库连接

Set conn = Server.CreateObject("ADODB.Connection")

connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"")

conn.Open connstr

sql="select UpFile from OStarRepTemplate where (id is null)"

rs.open sql,conn,1,3

rs.addnew

'添加上传的二进制内容入数据库

rs("UpFile").AppendChunk UpFile

rs.update

' 销毁数据库连接对象

rs.close

set rs=nothing

conn.close

set conn=nothing

' 返回存储信息

Response.Write "Upload successful!"

%>

以上服务器端代码并未考虑是否第一次保存,如果是的话,那么在数据库中新建一个记录保存上传的文件,如果不是第一次保存,那么应该是修改以前保存的记录。

使用该方法的益处

不引起页面转换。

不需要专用组件。

这段程序是纯脚本写成的,可以很容易的插入到其他代码中,而不需要任何HTML对象的配合。还可以把这个逻辑在任何支持COM标准的语言中实现。

演示范例

为了更生动地说明以上方法的效果,这里给出一个演示范例,范例源码可从这里下载。

注:以上接口最新版办公之星控件(最新版办公之星控件试用版从这里下载)才有提供。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有