關於在網站中圖片入庫和管理!

zhjian6發表於2004-10-15

本人有多年開發網站的經驗,對圖片的上傳及管理一直感到十分頭痛。最早以前是用FTP上傳圖片,但每次上傳時,客戶端都要下載外掛。到後來的無元件上傳,雖然解決了無客戶端,但圖片在網站上的管理顯得有點零亂:
  1、放圖片目錄要有可寫,可刪除的許可權。
  2、不能重名,所以要解決圖片命名的方法。
  3、比如圖片是為發部新聞時上傳的,當要刪除該條新聞時,要另寫程式碼對圖片進行刪除。因為許可權的關係有可能,刪除不了或者刪除時頁面執行的速度受影響。
  4、還會圖片很容易被別的網站,盜鏈。

所以,我認為將各模組中所上傳的圖片入庫,集中管理是有好處的!
具體操作:新建一張表,用於專門存放圖片的二進資料,一個自動加一的ID號。上傳圖片時,將圖片的二進位制資料入庫後,然後得到該圖片的ID號,在引用圖片的記錄只要記錄下該ID號即可!

入庫程式(以ASP為例):
demo1.asp
<%
'picBriny 為圖片二進位制資料。至於如何從表單中得到圖片二進位制資料,可以到網上查詢無元件上傳原理
'表名pic
'列名image 用於存放圖片的二進位制資料 
'列名ID 自動加一
rs.Open "pic",conn,1,3
rs.AddNew()
rs.Fields("image").AppendChunk picBriny
rs.Update
'在這裡就可以得到圖片的ID號:rs.Fields("ID")
rs.Close
%>
圖片顯示的頁面:
demo2.html
<html>
<head></head>
<body>
顯示庫中ID為1的圖片
<img src='demo3.asp?id=1'>
</body>
</html>
     
圖片出庫程式(以ASP為例):
demo3.asp
<%
id=Request("id") 
rs.Open "select image from pic where id="&id,conn,1,1 
Response.BinaryWrite rs("image").getChunk(7500000)
rec.close
%>

綜上所述可以解決上面的問題!
                1、圖片放庫後就脫離了目錄,就不用理會許可權問題!
                2、圖片在表中都有自己的ID號,不會有重名問題!
                3、當引用圖片的記錄要被刪除時,只需在庫中多刪除一條記錄!           
                4、如要防止盜鏈只需在出庫程式:demo3.asp 里加上驗證即可!
                5、方便了其它各種對圖片的管理!

         目前想到這麼多,當然也帶來一些問題:

         對系統資料庫的要求提高了,上傳幾M的圖片時可能速度會受影響,當然系統效能好的話,強烈推薦使用這種方案。
         程式碼比以前直接把圖片放在目錄下,複雜了!所以如果網站內圖片用的地方不是很多的話,還是不要用這個方案!
    

相關文章