無元件圖表片與文本同步存入資料庫的最簡單的辦法

來源:互聯網
上載者:User
資料|資料庫|無組件 無元件圖表片與文本同步存入資料庫的最簡單的辦法
動感教育網 發布日期:2001-7-17 字數:4798

一:前言

首先,沒有料到圖片與文本的上傳會引起這麼大的注意。上一篇貼子(Id=435906)貼出後,有不少人來信說看不懂。或
是仍然不能實現。我就以一種完全簡單的手法。完成無組件的文本與圖片上傳資料庫所有過程。希望能協助所有對此有疑
問的網友。

二:準備工作

按照慣例,我先將我的測試環境告訴大家。
系統:Win98se + pws + asp
編程環境:Visual Interdev 6.0
資料庫:Access2000 (因為網友問的最多的都是Access2000的問題。)
建一個庫:access2000中,先建好一個Test.mdb的資料庫。具體有四個欄位。
id | text1 | text2 | img
自動編號 文本 文本 OLE對象 ’如果是sql server 則選擇(image即可)

三:Are you ready ,Go!!!

3-1.建上傳表單:
我們知道,映像與文本是兩種不同制式的檔案(二進位,流式文本)而如果要同一表單提交的話,(file格式提交)則
我們擷取時就不能用原來的方法request.form而必須用equest.TotalBytes來獲得所有的提交資料。但這時兩種格式的檔案
混合在一起比較難分。我的上一貼已經告訴大家用二進位的方法來分開這些資料。但十分麻煩,要用到許多二進值的函
數,所以許多網友來信問我有沒有更簡單的方法,好。我可以告訴大家,有!而且保證下面的方法保證一學就會。(這種方
法很另類但偉人說過白貓,黑貓。能上網的就是好貓!)

upload.asp(具體代碼如下)

<% @ language=vbscript %>
<html>
<head>
<meta name="VI60_defaultClientScript" content="VBScript">
<title> File Upload </title>
<script ID="clientEventHandlersVBS" LANGUAGE="vbscript">
<!--
Sub form2_onsubmit //** 這裡是關鍵,當form2在提交的過程中時,即活form1的提交
form1.submit //**所以我們這裡用了兩個表單,但只用一個提交就可以了。
End Sub
-->
</script>
</head>
<body>

<form name="form1" ENCTYPE="multipart/form-data" ACTION="upimage.asp" METHOD="POST" target="_blank">
Please choose a picture to upload: <br>
<input NAME="picture" TYPE="FILE"> <br>
</form>

<form name="form2" action="uptext.asp" method="post">
<input type="text" name="text1"><br>
<input type="text" name="text2"><br>
<input type="submit" value="提交">
</form>

</body>
</html>

3-2 兵分兩路來處理資料。
首先,文本很簡單。

uptext.asp (代碼如下)

<% @ language=vbscript %>
<%
strconn="driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("test.mdb")

text1=request.form("text1")
text2=request.form("text2")
response.write text1
response.write text2

set rs=Server.CreateObject("adodb.recordset")
sql="SELECT top 1 * FROM imgtable ORDER BY id DESC" ’這裡的意思是選擇最後一個Id,既剛剛被改動
rs.Open sql,strconn,1,3 ’就是你上傳的映像的兩個文字欄位。

rs("text1")=text1 ’注意,這裡是改動不是添加,所以不用addnew。
rs("text2")=text2
rs.Update
rs.Close
%>
接著,來處理映像。
upimage.asp (具體代碼如下)

<%
FormSize = Request.TotalBytes ’得到資料
FormData = Request.BinaryRead( FormSize )

function ImageUp(formsize,formdata) ’這個函數的功能是截取其中的映像部分。
bncrlf=chrb(13) & chrb(10) ’做成函數後。以後你可以自己隨意使用了。
divider=leftb(formdata,instrb(formdata,bncrlf)-1)
datastart=instrb(formdata,bncrlf&bncrlf)+4
dataend=instrb(datastart+1,formdata,divider)-datastart
imageup=midb(formdata,datastart,dataend)
end function

Image=ImageUp (FormSize,Formdata) ’這裡就是映像部分了。

set rs=server.CreateObject("adodb.recordset")
strconn="driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("test.mdb")
sql="SELECT * FROM imgtable"
rs.Open sql,strconn,1,3

rs.AddNew ’因為表單二在表單一提交的過程中下提交了。
rs("img").appendchunk Image ’所以這裡是添加。
rs.Update
rs.Close


response.contenttype="image/gif"
response.binarywrite imageup(formsize,formdata) ’這裡是顯示映像。表示成功!

%>

啊?!?!原來如此簡單!

四:“顯示,我要同頁顯示”
終於完成了圖文同步提交。(真的是同步嗎?不是嗎?是嗎? 唉,我們只是為瞭解決問題。何必當真哪?不
是 嗎?)
現在我們還要讓他同頁顯示出來。其實,這是同樣的思路。我們也用兩頁來完成。

首頁面:show.asp

<%@ Language=VBScript %>
<%
strconn="driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("test.mdb")

set rs=Server.CreateObject("adodb.recordset")
sql="SELECT top 1 * FROM imgtable ORDER BY id DESC"
rs.Open sql,strconn,1,3
%>
<html>
<body>
以下是你的上傳資料。<br>
文本一:<% Response.Write rs("text1") %><br>
文本二:<% Response.Write rs("text2") %><br>

你的映像:
<img src=showimg.asp?id=<%=rs("id")%>> ’注意這裡,這才是關鍵。他可以實現網頁映像與文本



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。