青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Welcome to 陳俊峰's ---BeetleHeaded Man Blog !

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  58 隨筆 :: 32 文章 :: 18 評論 :: 0 Trackbacks

用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.BinaryWritedata
參數
data
要寫入到客戶端瀏覽器中的數據包。
*Request.TotalBytes語法:
variant=Request.TotalBytes
參數
variant
返回從客戶端讀取到數據量的字節數。
*AppendChunk語法
將數據追加到大型文本、二進制數據Field或Parameter對象。
object.AppendChunkData
參數
objectField或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將把調用解釋為新的GetChu
nk操作并從記錄的起始處開始讀取。如果其他Recordset對象不是首個Recordset對象的副本,
則訪問其中的字段不會破壞GetChunk操作。
如果Field對象的Attributes屬性中的adFldLong位設置為True,則可以對該字段使用GetChun
k方法。
如果在Field對象上使用Getchunk方法時沒有當前記錄,將產生錯誤3021(無當前記錄)。
   接下來,我們就要來設計我們的數據庫了,作為測試我們的數據庫結構如下(Access200
0):


字段名稱    類型    描述
   id   自動編號   主鍵值
img OLE對象   用來保存圖片數據 


對于在MSSQLServer7中,對應的結構如下:
字段名稱    類型    描述
   id    int(Identity)  主鍵值
img   image    用來保存圖片數據
現在開始正式編寫我們的純ASP代碼上傳部分了,首先,我們有一個提供給用戶的上傳界面
,可以讓用戶選擇要上傳的圖片。代碼如下
(upload.htm):
<html>
<body>
<center>
<form name="mainForm" enctype="multipart/form-data" action="process.asp" method=p
ost>
   <inputtype=filename=mefile><br>
   <inputtype=submitname=okvalue="OK">
</form>
</center>
</body>
</html>
注意enctype="multipart/form-data",一定要在Form中有這個屬性,否則,將無法得到上傳
上來的數據。接下來,我們要在process.asp中對從瀏覽器中獲取的數據進行必要的處理,因
為我們在process.asp中獲取到的數據不僅僅包含了我們想要的上傳上來的圖片的數據,也包
含了其他的無用的信息,我們需要剔除冗余數據,并將處理過的圖片數據保存到數據庫中,這
里我們以access2000為例。具體代碼如下(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)
setconnGraph=server.CreateObject("ADODB.connection")
connGraph.ConnectionString="driver={MicrosoftAccessDriver(*.mdb)};DBQ="&server.Ma
pPath("images.mdb")&";uid=;PWD=;"
connGraph.Open
setrec=server.createobject("ADODB.recordset")
rec.Open"SELECT*FROM[images]whereidisnull",connGraph,1,3
rec.addnew
rec("img").appendchunkmydata
rec.update
rec.close
setrec=nothing
setconnGraph=nothing
%>
好了,這下我們就把上傳來的圖片保存到了名為images.mdb的數據庫中了,剩下的工作就是要
將數據庫中的圖片數據顯示到網頁上面了。一般在HTML中,顯示圖片都是使用<IMG>標簽
,也就是<IMGSRC="圖片路徑">,但是我們的圖片是保存到了數據庫中,“圖片路徑”是什么
呢?呵呵,其實這個SRC屬性除了指定路徑外,也可以這樣使用哦:
<IMGSRC="showimg.asp?id=xxx">
所以,我們所要做的就是在showimg.asp中從數據庫中讀出來符合條件的
數據,并返回到SRC屬性中就可以了,具體代碼如下(showimg.asp):
<%
setconnGraph=server.CreateObject("ADODB.connection")
connGraph.ConnectionString="driver={MicrosoftAccessDriver(*.mdb)};DBQ="&
server.MapPath("images.mdb")&";uid=;PWD=;"
connGraph.Open
setrec=server.createobject("ADODB.recordset")
strsql="selectimgfromimageswhereid="&trim(request("id"))
rec.openstrsql,connGraph,1,1
Response.ContentType="image/*"
Response.BinaryWriterec("img").getChunk(7500000)
rec.close
setrec=nothing
setconnGraph=nothing
%>
注意在輸出到瀏覽器之前一定要指定Response.ContentType="image/*",
以便正常顯示圖片。
最后要注意的地方是,我的process.asp中作的處理沒有考慮到第一頁(upload.htm)中還有其
他數據,比如<INPUT type=tesxt name=userid>等等,如果有這些項目,你的process.asp就
要注意處理掉不必要的數據。

posted on 2006-05-10 10:54 Jeff-Chen 閱讀(486) 評論(1)  編輯 收藏 引用 所屬分類: ASP.NET

評論

# re: ASP實現圖片上傳 2006-11-06 11:39 kjl
如何將字段中的照片數據還原成文件  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            性亚洲最疯狂xxxx高清| 午夜在线成人av| 欧美日韩一区二区精品| 欧美精品成人| 欧美日韩福利视频| 欧美日韩综合| 国产一区二区久久精品| 在线观看日韩www视频免费 | 你懂的视频欧美| 亚洲福利视频三区| 欧美成人网在线| 亚洲精品字幕| 午夜欧美大片免费观看| 久久久久久久久久久久久久一区| 欧美成人午夜激情| 国产精品高清一区二区三区| 国产一区二区精品丝袜| 亚洲精选一区| 欧美亚洲在线观看| 欧美顶级少妇做爰| 中文国产成人精品久久一| 欧美一区二区在线看| 欧美夫妇交换俱乐部在线观看| 欧美性开放视频| 在线看不卡av| 亚洲欧美久久久久一区二区三区| 久久裸体艺术| 亚洲美女免费精品视频在线观看| 亚洲欧美日本在线| 久久久久久夜| 国产精品久久久久高潮| 欧美成人精品| 亚洲视频在线观看| 久久人人97超碰精品888| 亚洲激情校园春色| 欧美一区二区三区在线| 欧美日韩理论| 亚洲伦理在线| 麻豆九一精品爱看视频在线观看免费| 日韩小视频在线观看| 久久九九久精品国产免费直播| 国产精品久久久久一区二区三区| 亚洲精选国产| 亚洲大片在线| 久久青草欧美一区二区三区| 国产欧美日韩视频一区二区三区 | 欧美日韩你懂的| 91久久精品国产91性色| 久久免费黄色| 欧美一区二区视频网站| 欧美午夜视频网站| 亚洲无线一线二线三线区别av| 蜜桃av一区| 久久久久国产精品厨房| 国产亚洲成av人片在线观看桃| 亚洲系列中文字幕| 一区二区三区蜜桃网| 欧美日韩成人综合| 一区二区日韩免费看| 亚洲精品国产精品国自产观看浪潮| 麻豆国产精品777777在线| 在线观看日韩一区| 欧美成人午夜激情在线| 免费观看亚洲视频大全| 亚洲第一成人在线| 亚洲国产精品热久久| 欧美成人首页| 亚洲社区在线观看| 一区二区三区你懂的| 国产精品一区在线播放| 欧美制服丝袜| 久久久久久一区| 亚洲精品美女在线观看播放| 亚洲精品乱码久久久久久蜜桃91| 欧美日韩国产一级片| 亚洲午夜性刺激影院| 亚洲视频一区二区在线观看| 国产精品夜夜夜| 美国三级日本三级久久99| 久久婷婷国产综合国色天香| 亚洲激情社区| 亚洲一区欧美二区| 一区二区三区在线不卡| 亚洲电影在线播放| 欧美久久久久久久久| 香蕉久久夜色精品国产| 欧美影院一区| 中日韩男男gay无套| 先锋影音网一区二区| 久久久精品久久久久| 欧美不卡高清| 一本一本a久久| 亚洲综合电影一区二区三区| 黄色成人免费网站| 亚洲激情视频在线观看| 国产精品久久久久久久9999| 麻豆免费精品视频| 国产精品爱久久久久久久| 久久久国产精品一区| 欧美激情精品久久久久久蜜臀| 亚洲午夜激情网页| 久久久久久夜| 欧美一级一区| 欧美韩日一区二区| 久久精品国产清自在天天线| 欧美精品粉嫩高潮一区二区| 久久精品国产免费看久久精品| 欧美人妖在线观看| 麻豆精品在线观看| 国产欧美丝祙| 日韩亚洲欧美一区二区三区| 永久域名在线精品| 亚洲欧美在线aaa| 一区二区三区四区国产| 国产日韩在线一区| 一区二区精品| 亚洲女同同性videoxma| 亚洲永久免费精品| 久久久www免费人成黑人精品| 一本久道综合久久精品| 久久裸体艺术| 欧美一区二区三区男人的天堂| 欧美国产第二页| 开心色5月久久精品| 国产精品裸体一区二区三区| 亚洲欧洲偷拍精品| 亚洲国产精品毛片| 久久久精品日韩| 久久精品欧洲| 国产农村妇女毛片精品久久麻豆| 亚洲美女少妇无套啪啪呻吟| 亚洲精品午夜| 欧美aaaaaaaa牛牛影院| 免费成人高清视频| 狠狠色综合播放一区二区| 香蕉视频成人在线观看 | 欧美va亚洲va香蕉在线| 久久先锋影音| 国产主播喷水一区二区| 欧美亚洲在线播放| 久久久www| 影音先锋日韩有码| 久久这里有精品视频| 欧美成人精品h版在线观看| 影音国产精品| 美国十次了思思久久精品导航| 老司机一区二区三区| 伊人久久大香线| 麻豆精品视频在线观看视频| 欧美成人中文| 国产精品99久久久久久www| 欧美三级电影大全| 国产亚洲一区二区在线观看| 久久夜色精品一区| 久久夜色精品亚洲噜噜国产mv| 国产午夜精品美女毛片视频| 久久福利资源站| 欧美丰满高潮xxxx喷水动漫| 亚洲国产精品一区二区尤物区| 欧美成人精品一区二区| 亚洲精品美女在线| 午夜在线播放视频欧美| 激情欧美一区二区三区| 欧美国产日韩精品| 亚洲午夜久久久久久久久电影网| 欧美在线视频一区二区三区| 在线观看亚洲专区| 欧美日韩视频在线第一区| 亚洲综合导航| 亚洲第一在线视频| 亚洲女性裸体视频| 伊人久久成人| 国产精品国产福利国产秒拍| 久久精品国产第一区二区三区| 亚洲国产日韩在线一区模特| 亚洲一线二线三线久久久| 国产精品理论片在线观看| 久久婷婷综合激情| 日韩亚洲欧美在线观看| 久久综合久久综合九色| 宅男噜噜噜66国产日韩在线观看| 国产美女精品| 欧美高清一区二区| 久久av一区二区三区漫画| 最新成人在线| 久久综合久久综合久久综合| 亚洲综合欧美| 亚洲免费电影在线| 狠狠色狠狠色综合人人| 国产精品极品美女粉嫩高清在线| 久久一综合视频| 亚洲一区在线免费| 亚洲精品乱码久久久久| 麻豆成人在线| 小黄鸭精品密入口导航| 一区二区三区国产| 91久久黄色| 亚洲电影免费在线 | 亚洲二区在线视频| 久久精品国产免费观看|