在線編輯公文并保存到后臺(tái)數(shù)據(jù)庫(kù)
發(fā)表時(shí)間:2024-01-23 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]在線編輯公文并保存到后臺(tái)數(shù)據(jù)庫(kù) -------------------------------------------------------------------------------- http://www.standsoft.com (2004.1.14) 文章來源:智島軟件 [IMG]...
在線編輯公文并保存到后臺(tái)數(shù)據(jù)庫(kù)
--------------------------------------------------------------------------------
http://www.standsoft.com (2004.1.14) 文章來源:智島軟件
[IMG]Http://www.hytian.com/ocx/NetOStar.jpg[/IMG]
在線演示http://www.oapro.com/ostarocx/sample/savefilepro/default.asp
源代碼http://www.oapro.com/ostarocx/download/OStarOCX_savefile.rar
概述
本文講解了一個(gè)使用辦公之星控件實(shí)現(xiàn)在線編輯文件并保存到后臺(tái)數(shù)據(jù)庫(kù)的例子,使用該方法沒有選擇文件步驟,可以在WEB環(huán)境下實(shí)現(xiàn)類似單機(jī)環(huán)境下點(diǎn)擊保存文件的效果。
引言
為了在HTML網(wǎng)頁(yè)中獲得上傳功能,在客戶端我們可以使用如下格式的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>
這種方案在客戶端和服務(wù)器端的使用都有很多限制。首先,我們必須使用POST方法,因?yàn)镚ET方法無法處理這樣的表單數(shù)據(jù)。并且,沒有什么方法可以在不使用表單的情況下引發(fā)一個(gè)POST動(dòng)作。把數(shù)據(jù)發(fā)送給表單處理程序后,瀏覽器將會(huì)把處理程序作為新頁(yè)面加載,然后使用者會(huì)看到一個(gè)不討人喜歡的頁(yè)面轉(zhuǎn)換過程。
辦公之星控件中的上傳方案
需要按照如下步驟操作:
客戶端:
將辦公之星控件所編輯的文檔保存至本地
利用HTTP協(xié)議將保存的臨時(shí)文檔發(fā)送給Web服務(wù)器
服務(wù)器端:
從Request對(duì)象中讀出上傳的二進(jìn)制文檔
讀出二進(jìn)制數(shù)據(jù)并且存儲(chǔ)到數(shù)據(jù)庫(kù)的BLOB型字段中。
利用辦公之星控件可以在WEB環(huán)境下實(shí)現(xiàn)和WORD功能相當(dāng)?shù)膱D文混排以及字處理功能,但如何將所編輯的文檔保存至服務(wù)器端?上述的方案似乎沒有什么新東西。按照前言中的說明,file控件的value值為只讀,一定存在選擇文檔在手動(dòng)點(diǎn)擊上傳按鈕的過程。是這樣嗎?先介紹二個(gè)辦公之星控件接口方法:
1. SaveToTempFile(str filename)
將當(dāng)前用辦公之星控件編輯的文檔保存至本地形成一個(gè)臨時(shí)文件,參數(shù)filename為臨時(shí)文件的文件名稱。該方法會(huì)返回一個(gè)參數(shù),這個(gè)參數(shù)表示臨時(shí)文件的絕對(duì)路徑。示例: SaveToTempFile("abc.ost")
2. UpLoadFile(str filepath,str operatorfile)
將本地指定文件上傳至服務(wù)器端,參數(shù)filepath為本地待上傳文件的絕對(duì)路徑,operatorfile為服務(wù)器端用來接收上傳文件流的文件名稱。該方法會(huì)返回一個(gè)參數(shù),提示操作過程中是否成功。示例:UpLoadFile("c:\abc.ost","http://www.oapro.com/save.asp")
看到這里,相信您已經(jīng)明白了,辦公之星控件已提供接口方法,將指定文件自動(dòng)上傳。下面給出客戶端完整的代碼:
<script language="vbscript">
Public Sub mnuFileSave_click()
dim str,strRet
'生成臨時(shí)文件
str=OStar.SaveToTempFile("abc.ost")
'將臨時(shí)文件上傳
strRet=OStar.UpLoadFile(str,"http://www.oapro.com/save.asp")
'上傳成功與否提示
alert(strRet)
End Sub
</script>
上述頁(yè)面中OStar為辦公之星控件在頁(yè)面中的操作對(duì)象名稱。以下代碼為服務(wù)器端如何處理上傳文件并保存至數(shù)據(jù)庫(kù):
<%
' 定義變量和對(duì)象
dim sql
dim rs
dim UpFile
dim conn
dim connstr
dim db
'保存上傳文件的數(shù)據(jù)庫(kù)名稱
db="db.mdb"
'取得上傳的二進(jìn)制數(shù)據(jù)
UpFile=Request.BinaryRead(Request.TotalBytes)
'建立數(shù)據(jù)庫(kù)連接
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
'添加上傳的二進(jìn)制內(nèi)容入數(shù)據(jù)庫(kù)
rs("UpFile").AppendChunk UpFile
rs.update
' 銷毀數(shù)據(jù)庫(kù)連接對(duì)象
rs.close
set rs=nothing
conn.close
set conn=nothing
' 返回存儲(chǔ)信息
Response.Write "Upload successful!"
%>
以上服務(wù)器端代碼并未考慮是否第一次保存,如果是的話,那么在數(shù)據(jù)庫(kù)中新建一個(gè)記錄保存上傳的文件,如果不是第一次保存,那么應(yīng)該是修改以前保存的記錄。
使用該方法的益處
不引起頁(yè)面轉(zhuǎn)換。
不需要專用組件。
這段程序是純腳本寫成的,可以很容易的插入到其他代碼中,而不需要任何HTML對(duì)象的配合。還可以把這個(gè)邏輯在任何支持COM標(biāo)準(zhǔn)的語言中實(shí)現(xiàn)。