分类: C/C++
2008-03-30 22:21:24
Request,BinaryRead,CreateObject,ADODB.Connection,ADODB.Recordset,ADODB.Stream,SaveToFile,AppendChunk,CellWeb,OpenFile,Uploadfile
引言:用友华表CellWeb插件在提供强大的报表功能的同时,在数据于服务器与客户端之间的传送上也具有很强的功能,为开发者提供有效便利的操作平台。下面实例实现了打开服务器端或本地文件,自动上传cell文件并保存于服务器端的Access数据库中或者指定目录中,可以在WEB环境下实现类似单机环境下操作文件的效果。
正文:(本文以ASP ,VbScript,Access数据库为例)用友华表CellWeb插件提供了两个方法:
客户端利用插件的 OpenFile 方法可以打开本地的或服务器端的华表文件。
客户端利用插件的 UploadFile 方法可以把客户端编辑好的华表文件上传到服务器端,服务器端读取上传的华表文件的二进制流,可以把它保存到数据库的二进制字段中,也可以保存到服务器端指定的目录下。这样就可以实现客户端与服务器的交互了。
客户端示例代码:通过插件的 OpenFile , UploadFile方法实现文件操作
服务器端代码:
下面是服务器端的 HBUpload.asp 的实现代码:
<% Const adTypeBinary = 1 const adSaveCreateOverWrite = 2 ''''当缓冲页输出时,只有当前页的所有服务器脚本处理完毕或者调用了End方法后,服务器才将响应发送给客户端 Response.Buffer = true ''''接收客户发来的文件流 UpFile=Request.BinaryRead(Request.TotalBytes) ''''*************************************************************************** '''' 保存到数据库中 ''''*************************************************************************** ''''建立与access数据库的连接 Set objConn = Server.CreateObject("ADODB.Connection") ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("HBUpload.MDB") objConn.Open ConnStr ''''打开OLE字段,将数据写入数据库 Set objRs = Server.CreateObject("ADODB.Recordset") strSQL = "SELECT * FROM HBUpload WHERE(CELLFILE is null)" objRs.Open strSQL, objConn, 1, 3 objRs.AddNew objRs("CELLFILE").AppendChunk(UpFile) objRs.Update objRs.Close objConn.Close Set objRs = Nothing Set objConn = Nothing ''''******************************************** ''''保存到磁盘文件,通过流将数据保存成文件 ''''******************************************** Set objStream=Server.CreateObject("ADODB.Stream") objStream.Open objStream.Type=adTypeBinary objStream.Write UpFile objStream.SaveToFile Server.MapPath("HBUpload.cll"), adSaveCreateOverWrite objStream.Close Set objStream = Nothing %>
以上服务器端代码并未考虑是否第一次保存,如果是的话,那么在数据库中新建一个记录保存上传的文件,如果不是第一次保存,那么应该是修改以前保存的记录。
本文简单的介绍了用友华表CellWeb插件的 OpenFile 与 UploadFile 方法实现文件在客户与服务器之间操作,通过二进制流实现与数据库间的存取,希望对你的工作有所帮助。系统要求 :
CellWeb 插件:5.1.4.510及以上的版本。
ADO:2.5及以上的版本。
为了更生动地说明以上方法的效果,这里给出一个范例源代码。范例源码可