亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

用純ASP代碼實現圖片上傳并存入數據庫中

2019-11-18 22:11:52
字體:
來源:轉載
供稿:網友
用純ASP代碼實現圖片上傳并存入數據庫



用ASP編寫網站應用程序時間長了,難免會遇到各式各樣的問題,其中

關于如何上傳文件到服務器恐怕是遇見最多的問題了,尤其是上傳圖片,比如

你想要在自己的社區里面實現類似網易虛擬社區提供的“每日一星”的功能,

就要提供給網友上傳照片的功能。上傳圖片文件到服務器可以使用各種免費的

文件上傳組件,使用起來功能雖然很強大,但是由于很多情況下,我們只能使

用免費的支持ASP的空間或者租用別人的虛擬空間,對于第一種情況,我們

根本就沒有可能來使用文件上傳組件;至于第二種情況,我們也要付出不少的

“銀子”才可以。除非你擁有自己的虛擬主機,你就可以隨便的在服務器上面

安裝自己所需要的組件,這種情況對于大多數人來說是可望而不可及的。那我

們就沒有辦法了嗎?呵呵,答案是肯定的(當然是肯定的了,要不然我也沒法

寫出這篇文章啊)。下面就讓我們一起來使用純ASP代碼來實現圖片的上傳

以及保存到數據庫的功能(順便也實現顯示數據庫中的圖片到網頁上的功

能)。

首先我們先來熟悉一下將要使用的對象方法。我們用來獲取上一個頁面傳

遞過來的數據一般是使用Request對象。同樣的,我們也可以使用Request對象

來獲取上傳上來的文件數據,使用的方法是Request.BinaryRead()。而我們要從

數據庫中讀出來圖片的數據顯示到網頁上面要用到的方法是:

Request.BinaryWrite()。在我們得到了圖片的數據,要保存到數據庫中的時候,

不可以直接使用Insert語句對數據庫進行操作,而是要使用ADO的

AppendChunk方法,同樣的,讀出數據庫中的圖片數據,要使用GetChunk方

法。各個方法的具體語法如下:

* Request.BinaryRead語法:

variant = Request.BinaryRead(count)

參數

variant

返回值保存著從客戶端讀取到數據。

count

指明要從客戶端讀取的數據量大小,這個值小于或者等于使用方法

Request.TotalBytes得到的數據量。

* Request.BinaryWrite語法:

Request.BinaryWrite data

參數

data

要寫入到客戶端瀏覽器中的數據包。

* Request.TotalBytes語法:

variant = Request.TotalBytes

參數

variant

返回從客戶端讀取到數據量的字節數。

* AppendChunk語法

將數據追加到大型文本、二進制數據 Field 或 Parameter 對象。

object.AppendChunk Data

參數

object Field 或 Parameter 對象

Data 變體型,包含追加到對象中的數據。

說明

使用 Field 或 Parameter 對象的 AppendChunk 方法可將長二進制或字符數

據填寫到對象中。在系統內存有限的情況下,可以使用 AppendChunk 方法對長

整型值進行部分而非全部的操作。

* GetChunk語法

返回大型文本或二進制數據 Field 對象的全部或部分內容 。

variable = field.GetChunk( Size )

返回值

返回變體型。

參數

Size 長整型表達式,等于所要檢索的字節或字符數。

說明

使用 Field 對象的 GetChunk 方法檢索其部分或全部長二進制或字符數據。

在系統內存有限的情況下,可使用 GetChunk 方法處理部分而非全部的長整型

值。

GetChunk 調用返回的數據將賦給“變量”。如果 Size 大于剩余的數據,則

GetChunk 僅返回剩余的數據而無需用空白填充“變量”。如果字段為空,則

GetChunk 方法返回 Null。

每個后續的 GetChunk 調用將檢索從前一次 GetChunk 調用停止處開始的數

據。但是,如果從一個字段檢索數據然后在當前記錄中設置或讀取另一個字段

的值,ADO 將認為已從第一個字段中檢索出數據。如果在第一個字段上再次調

用 GetChunk 方法,ADO 將把調用解釋為新的 GetChunk 操作并從記錄的起始

處開始讀取。如果其他 Recordset 對象不是首個 Recordset 對象的副本,則

訪問其中的字段不會破壞 GetChunk 操作。

如果 Field 對象的 Attributes 屬性中的 adFldLong 位設置為 True,則可

以對該字段使用 GetChunk 方法。

如果在 Field 對象上使用 Getchunk 方法時沒有當前記錄,將產生錯誤 3021

(無當前記錄)。

接下來,我們就要來設計我們的數據庫了,作為測試我們的數據庫結構如

下(Access97):

字段名稱    類型    描述

  id    自動編號   主鍵值

img OLE對象   用來保存圖片數據 



對于在MS SQL Server7中,對應的結構如下:

字段名稱    類型    描述

  id     int(Identity) 主鍵值

img   image     用來保存圖片數據 



現在開始正式編寫我們的純ASP代碼上傳部分了,首先,我們有一個提

供給用戶的上傳界面,可以讓用戶選擇要上傳的圖片。代碼如下

(upload.htm):

<html>

<body>

<center>

   <form name="mainForm" enctype="multipart/form-data"

action="PRocess.asp" method=post>

    <input type=file name=mefile><br>

   <input type=submit name=ok value="OK">

   </form>

</center>

</body>

</html>

注意代碼中黑色斜體的部分,一定要在Form中有這個屬性,否則,將無

法得到上傳上來的數據。

接下來,我們要在process.asp中對從瀏覽器中獲取的數據進行必要的處

理,因為我們在process.asp中獲取到的數據不僅僅包含了我們想要的上傳上來

的圖片的數據,也包含了其他的無用的信息,我們需要剔除冗余數據,并將處

理過的圖片數據保存到數據庫中,這里我們以Access97為例。具體代

碼如下(process.asp):

<%

response.buffer=true

formsize=request.totalbytes

formdata=request.binaryread(formsize)

bncrlf=chrB(13) & chrB(10)

divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)

datastart=instrb(formdata,bncrlf & bncrlf)+4

dataend=instrb(datastart+1,formdata,divider)-datastart

mydata=midb(formdata,datastart,dataend)



set connGraph=server.CreateObject("ADODB.connection")

connGraph.ConnectionString="driver={Microsoft access Driver (*.mdb)};DBQ=" &

server.MapPath("images.mdb") & ";uid=;PWD=;"

connGraph.Open



set rec=server.createobject("ADODB.recordset")

rec.Open "SELECT * FROM [images] where id is null",connGraph,1,3

rec.addnew

rec("img").appendchunk mydata

rec.update

rec.close

set rec=nothing

set connGraph=nothing

%>

好了,這下我們就把上傳來的圖片保存到了名為images.mdb的數據庫中

了,剩下的工作就是要將數據庫中的圖片數據顯示到網頁上面了。一般在HT

ML中,顯示圖片都是使用<IMG>標簽,也就是<IMG SRC="圖片路徑">,但

是我們的圖片是保存到了數據庫中,“圖片路徑”是什么呢?呵呵,其實這個

SRC屬性除了指定路徑外,也可以這樣使用哦:

<IMG SRC="showimg.asp?id=xxx">

所以,我們所要做的就是在showimg.asp中從數據庫中讀出來符合條件的

數據,并返回到SRC屬性中就可以了,具體代碼如下(showimg.asp):

<%

set connGraph=server.CreateObject("ADODB.connection")

connGraph.ConnectionString="driver={Microsoft Access Driver (*.mdb)};DBQ=" &

server.MapPath("images.mdb") & ";uid=;PWD=;"

connGraph.Open

set rec=server.createobject("ADODB.recordset")

strsql="select img from images where id=" & trim(request("id"))

rec.open strsql,connGraph,1,1

Response.ContentType = "image/*"

Response.BinaryWrite rec("img").getChunk(7500000)

rec.close

set rec=nothing

set connGraph=nothing

%>

注意在輸出到瀏覽器之前一定要指定Response.ContentType = "image/*",

以便正常顯示圖片。

最后要注意的地方是,我的process.asp中作的處理沒有考慮到第一頁

(upload.htm)中還有其他數據,比如<INPUT type=tesxt name=userid>等等,如果

有這些項目,你的process.asp就要注意處理掉不必要的數據。

怎么樣,其實上傳圖片并保存到數據庫很簡單吧,這樣再也不用為自己的

空間無法使用各類的上傳組件發愁了吧。還等什么?趕快試一試吧。



(以上所有程序均在WinNT4.0英文版,IIS4,Access97/MS SQL Server7.0中運

行通過)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品视频va| 在线激情影院一区| www亚洲欧美| 亚洲精品日韩欧美| 色婷婷久久一区二区| 亚洲第一精品自拍| 国产亚洲精品高潮| 久久成人18免费网站| 狠狠躁夜夜躁人人爽超碰91| 国产精品美女www| 国产精品www网站| 在线看日韩欧美| 久久天堂电影网| 97视频网站入口| 久久久久北条麻妃免费看| 欧美成人免费va影院高清| 中文字幕久热精品在线视频| 久久国产精品偷| 国产亚洲精品美女久久久| 亚洲综合日韩中文字幕v在线| 国产一区二区三区毛片| 日韩电影大全免费观看2023年上| 日韩成人在线电影网| 亚洲精品动漫100p| 精品亚洲男同gayvideo网站| 亚洲女成人图区| 国产精品高潮在线| 国产主播喷水一区二区| 亚洲成人av片在线观看| 北条麻妃久久精品| 国产精品久久久久久久9999| 欧美大尺度电影在线观看| 成人国产在线激情| 亚洲国产精品高清久久久| 91黑丝高跟在线| 一区二区三区精品99久久| 97精品国产97久久久久久免费| 成人免费视频在线观看超级碰| 久久91精品国产91久久跳| 大伊人狠狠躁夜夜躁av一区| 亚洲国产精品字幕| 欧美成人亚洲成人日韩成人| 欧美在线国产精品| 久久久999国产精品| 欧美日韩在线视频首页| 亚洲综合成人婷婷小说| 黑人欧美xxxx| 亚洲少妇激情视频| 国产精品成久久久久三级| 国产剧情日韩欧美| 欧美人在线观看| 国产精品永久免费视频| 国产综合香蕉五月婷在线| 96pao国产成视频永久免费| 国产精品丝袜久久久久久不卡| 久久久久久综合网天天| 98精品国产高清在线xxxx天堂| 亚洲黄色av网站| 国产精品色悠悠| 色综合久久天天综线观看| 精品久久久久久国产| 亚洲综合色激情五月| 全亚洲最色的网站在线观看| 中文字幕精品久久久久| 九九热在线精品视频| 欧美在线视频一二三| 亚洲91精品在线观看| 亚洲视频在线观看网站| 欧美日韩国内自拍| 91精品国产综合久久香蕉的用户体验| 国产日韩精品一区二区| 国产亚洲成精品久久| 欧美性一区二区三区| 欧美精品生活片| 久久久久久97| 日韩av观看网址| 狠狠躁18三区二区一区| 亚洲xxxx妇黄裸体| 亚洲电影免费观看高清完整版在线观看| 亚洲第五色综合网| 国产精品美女久久久免费| 在线观看视频亚洲| 青青草国产精品一区二区| 热草久综合在线| 一本大道久久加勒比香蕉| 欧美成人精品一区| 日韩欧美在线播放| 不卡av电影在线观看| 91精品视频大全| 日本伊人精品一区二区三区介绍| 成人激情在线播放| 亚洲国产精彩中文乱码av在线播放| 国产精品成人播放| 中文字幕精品一区二区精品| 日韩欧美aaa| 欧美日韩午夜剧场| 97在线日本国产| 午夜精品久久久久久久久久久久久| 亚洲欧美综合另类中字| 久久精品视频中文字幕| 久久免费视频网站| 2019中文字幕全在线观看| 久久国产精品偷| 九九久久久久久久久激情| 久久久国产精品视频| 日韩亚洲成人av在线| 蜜月aⅴ免费一区二区三区| 国产激情综合五月久久| 久久成人这里只有精品| 亚洲精品国产精品乱码不99按摩| 91免费观看网站| 精品久久久国产| 久久精品美女视频网站| 日本成人在线视频网址| 性色av一区二区三区在线观看| 亚洲国内精品在线| 日本伊人精品一区二区三区介绍| 亚洲性xxxx| 国产精品久久激情| 亚洲伊人久久大香线蕉av| 亚洲精品aⅴ中文字幕乱码| 亚洲国产私拍精品国模在线观看| 中文字幕亚洲欧美在线| 日韩av在线网站| 国产精品成人一区二区三区吃奶| 日韩国产在线看| 成人av电影天堂| 久久精品电影网| 91视频九色网站| 91亚洲国产成人久久精品网站| 日韩亚洲一区二区| 久久综合88中文色鬼| 亚洲综合在线小说| 欧美大秀在线观看| 国产精品视频久久久| 91高清视频在线免费观看| 亚洲欧美国产精品va在线观看| 欧美成人在线免费视频| 国产精品第2页| 欧美国产精品人人做人人爱| 亚洲人成电影网站色…| 国产精品一区二区三区久久| 色七七影院综合| 亚洲精品99999| 国产一区二区三区在线| 一区二区成人精品| 久久久久久久久爱| 韩曰欧美视频免费观看| 亚洲一区二区三区视频| 亚洲视频在线观看免费| 日韩有码在线观看| 高清视频欧美一级| 精品视频在线播放色网色视频| 91高清视频在线免费观看| 亚洲成人av资源网| 91久久国产综合久久91精品网站| 另类专区欧美制服同性| 久久999免费视频| 黄色精品一区二区| 国产主播欧美精品| 日韩av中文字幕在线| 日本午夜精品理论片a级appf发布| 欧美激情中文网| 亚洲第一网站免费视频|