国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

無組件圖片與文本同步存入數(shù)據(jù)庫的最簡單的辦法

2019-11-18 22:15:18
字體:
供稿:網(wǎng)友
一:前言

   首先,沒有料到圖片與文本的上傳會引起這么大的注意。上一篇貼子(Id=435906)貼出后,有不少人來信說看不懂。或
是仍然不能實現(xiàn)。我就以一種完全簡單的手法。完成組件的文本與圖片上傳數(shù)據(jù)庫所有過程。希望能幫助所有對此有疑
問的網(wǎng)友。

二:準備工作

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

三:Are you ready ,Go!!!

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

upload.asp(具體代碼如下)
    
<% @ language=vbscript %>
<html>
<head>
<meta name="VI60_defaultClientScript" content="VBScript">
<title> File Upload </title>
<script ID="clientEventHandlersVBS" LANGUAGE="vbscript">
<!--                           
Sub form2_onsubmit               //** 這里是關(guān)鍵,當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 兵分兩路來處理數(shù)據(jù)。
    首先,文本很簡單。

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                 ’得到數(shù)據(jù)
FormData = Request.BinaryRead( FormSize )

function ImageUp(formsize,formdata)          ’這個函數(shù)的功能是截取其中的圖像部分。
    bncrlf=chrb(13) & chrb(10)           ’做成函數(shù)后。以后你可以自己隨意使用了。
    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)  ’這里是顯示圖像。表示成功!

%>

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

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

主頁面: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")%>>           ’注意這里,這才是關(guān)鍵。他可以實現(xiàn)網(wǎng)頁圖像與文本
</body>                                          ’共存。
</html>

幕后頁面:showimg.asp        (說他是幕后的頁面,因為他潛伏在主頁面里。看上是一個頁面一樣)

<%@ Language=VBScript %>
<%
strconn="driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("test.mdb")
id=Request("id")
set rs=server.CreateObject("adodb.recordset")
sql="SELECT * FROM imgtable where id="&id
rs.Open sql,strconn,1,3
response.contenttype="image/gif"
Response.BinaryWrite rs("img")
%>

(全文完:希望本文能幫助那些急于想解決本類問題的網(wǎng)友。)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 克什克腾旗| 宜都市| 石棉县| 莒南县| 满城县| 长顺县| 平远县| 金秀| 耒阳市| 景德镇市| 宝丰县| 巨野县| 荔浦县| 宁海县| 通江县| 仁怀市| 宜章县| 耒阳市| 贺兰县| 惠来县| 松原市| 手机| 齐河县| 呼图壁县| 七台河市| 剑阁县| 玛曲县| 嘉义县| 清河县| 绥宁县| 行唐县| 崇礼县| 巨鹿县| 陇西县| 沂水县| 囊谦县| 子长县| 和林格尔县| 公主岭市| 临西县| 克拉玛依市|