免费体验120秒视频_榴莲榴莲榴莲榴莲官网_2021国产麻豆剧果冻传媒入口_一二三四视频社区在线
當前位置:首頁文章首頁 IT學院 IT技術

關于ASP實現上傳圖片功能的原理及示例說明

作者:  來源:  發布時間:2011-6-24 15:37:33  點擊:

本文主要跟大家介紹到的是關于ASP實現上傳圖片功能的原理及示例說明,希望對大家有用。

用ASP編寫網站應用程序時間長了,難免會遇到各式各樣的問題,其中關于如何上傳文件到服務器恐怕是遇見最多的問題了,尤其是上傳圖片,比如你想要在自己的社區里面實現類似網易虛擬社區提供的“每日一星”的功能,就要提供給網友上傳照片的功能。上傳圖片文件到服務器可以使用各種免費的文件上傳組件,使用起來功能雖然很強大,但是由于很多情況下,我們只能使用免費的支持ASP的空間或者租用別人的虛擬空間,對于第一種情況,我們根本就沒有可能來使用文件上傳組件;至于第二種情況,我們也要付出不少的“銀子”才可以。除非你擁有自己的虛擬主機,你就可以隨便的在服務器上面安裝自己所需要的組件,這種情況對于大多數人來說是可望而不可及的。那我們就沒有辦法了嗎?呵呵,答案是肯定的(當然是肯定的了,要不然我也沒法寫出這篇文章啊)。下面就讓我們一起來使用純ASP代碼來實現圖片的上傳以及保存到數據庫的功能(順便也實現顯示數據庫中的圖片到網頁上的功能)。
  
  
  首先我們先來熟悉一下將要使用的對象方法。我們用來獲取上一個頁面傳遞過來的數據一般是使用Request對象。同樣的,我們也可以使用Request對象來獲取上傳上來的文件數據,使用的方法是Request.BinaryRead()。而我們要從數據庫中讀出來圖片的數據顯示到網頁上面要用到的方法是: class=code

  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將把調用解釋為新的GetChunk操作并從記錄的起始處開始讀取。如果其他Recordset對象不是首個Recordset對象的副本,則訪問其中的字段不會破壞GetChunk操作。

  如果Field對象的Attributes屬性中的adFldLong位設置為True,則可以對該字段使用GetChunk方法。
 
  如果在Field對象上使用Getchunk方法時沒有當前記錄,將產生錯誤3021(無當前記錄)。
 
  接下來,我們就要來設計我們的數據庫了,作為測試我們的數據庫結構如下(Access2000):
  
  
  字段名稱    類型    描述

   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">

相關軟件

相關文章

文章評論

軟件按字母排列: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
免费体验120秒视频_榴莲榴莲榴莲榴莲官网_2021国产麻豆剧果冻传媒入口_一二三四视频社区在线
主站蜘蛛池模板: 国产三级高清| 国产亚洲精品无码成人| 欧美性色19p| 久久er99热精品一区二区| 99在线精品免费视频九九视 | 亚洲欧美国产视频| 亚洲国产一区二区三区在线观看| 乱人伦中文视频在线观看免费| 岛国精品在线观看| 337p人体大胆扒开下部 | 中文字幕1页| 国产aaa女人十八毛片| 亚洲综合在线成人一区| 欧美电影院一区二区三区| 欧美电影一区二区三区| 福利片视频区| 成人精品一区久久久久| 国产精品天天在线| 国产成人免费全部网站| 又黄又爽又色的视频| 欧美激情亚洲色图| 精品福利视频一区二区三区| 波多野结衣免费一区视频 | 两对夫妇交换野营| 色吊丝永久性观看网站大全| 疯狂做受XXXX国产| 亚洲乱亚洲乱妇无码麻豆| 国模精品一区二区三区视频| 亚洲av之男人的天堂网站| 国产偷久久久精品专区| 亚洲明星合成图综合区在线| 亚洲自偷自偷在线制服| 亚洲日韩亚洲另类激情文学| 亚洲不卡av不卡一区二区| 欧洲美熟女乱又伦免费视频| 欧美巨大黑人精品videos| 午夜不卡av免费| 无码人妻精品一区二| 国产超碰人人爽人人做人人添| 亚洲av无码专区在线观看下载| 亚洲AV成人片无码网站|