在線編輯公文并保存到后臺數據庫
發表時間:2024-01-23 來源:明輝站整理相關軟件相關文章人氣:
[摘要]在線編輯公文并保存到后臺數據庫 -------------------------------------------------------------------------------- http://www.standsoft.com (2004.1.14) 文章來源:智島軟件 [IMG]...
在線編輯公文并保存到后臺數據庫
--------------------------------------------------------------------------------
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
概述
本文講解了一個使用辦公之星控件實現在線編輯文件并保存到后臺數據庫的例子,使用該方法沒有選擇文件步驟,可以在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標準的語言中實現。