台灣最大程式設計社群網站
線上人數
170
 
會員總數:245221
討論主題:189091
歡迎您免費加入會員
討論區列表 >> 專欄文章 >> aspupload上傳元件與寫入讀取資料庫圖檔
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
aspupload上傳元件與寫入讀取資料庫圖檔
價值 : 0 QP  點閱數:1019 回應數:0

樓主

西風
中級專家
4491 12
2044 592
發送站內信

1.
ASPUPLOAD上傳元件
http://www.aspupload.com/
(30天試用期),不知道那位網友提供的延長註冊器有沒效??
圖檔(jpg/gif/png),如何寫入Access資料檔,上式網址有詳盡說明
UPLOAD.FILES和UPLOAD.FORM,所以多張圖與多個不同type的資料(text/checkbox/option/radio等)可同時傳送...

2.
ASPJPEG修圖檔元件
http://www.aspupload.com/
不出到這元件的試用期是幾天??

3.
Access 2003
資料表中有個欄位設定為?OLE 物件?,以存放圖檔
rs("ole屬性欄位名") = File.Binary
rs("sfname")寫入各相簿目錄的小檔案名,以方便一次顯示20~30張小圖瀏覽
rs("Hash")欄位儲存圖檔的File.MD5Hash,不同檔名但其實是同一個圖檔,不會再儲存第二次....

4.
用 img src=http://www.chome.idv.tw/showimage?id=xxx
秀圖主要有三行
objContentType=right(objRS("filename"), 3)
Response.ContentType ="image/" &objContentType
Response.BinaryWrite objRS("ole屬性欄位名").Value
這對jpg有效,但若為其它類型圖檔,則需跳過cntHeader = 76

'呼叫副程序
GetImageType "ole", rs1("urimage") 'for Access
GetImageType Trim(rs1("imgtype")), rs1("urimage") 'SQL Server


Sub GetImageType (ctype, fldImg)
Dim intFldSize, objOle, realSize
Const cntHeader = 76
Select case LCase(ctype)
Case "ole":
ctype = "image/bmp"
intFldSize = fldImg.ActualSize
objOle = fldImg.GetChunk(cntHeader)
realSize = fldImg.GetChunk(intFldSize - cntHeader)
Case "bmp", "gif", "jpeg":
ctype = "image/" & ctype
realSize = fldImg.Value
End Select
strContent = ctype
intBytes = realSize
End Sub

4.
我的簡易相簿

http://www.chome.idv.tw/photo/

概要:

新增一個相簿即建立一個相簿名稱的次目錄(用來存瀏覽的小圖檔)

上傳相片:大檔讀入資料庫,小檔寫入該相簿對應的目錄(使用ASPUpload元件和aspjpeg)
確認File_ImageType不為"UNKNOWN" ,再比對File_MD5Hash有沒有相同
寫入的小檔名由上傳時的SERVER系統時間產生,yy_mm_dd_hh_mm_ss_0x.jpg

多張瀏覽:直接讀小檔
(註:<img src=ShowsmallImage.asp?id=xxxx>每顯示一張小圖就要開一次資料表單,非常不妥,讓伺服器過度忙碌)

一張瀏覽:讀資料庫<img src=ShowImage.asp?id=xxxx>

管理模組:顯示use=0,暫時不顯式use=1,永久刪除也要刪除小檔(fs.DeleteFile)

底下是相簿管理模式畫面



其中改相簿名稱和刪除相簿
1.
必需設定資料庫關聯,A資料表的areana欄位某一筆資料,假設其值為[明星美女]被刪除或更改資料時
所有B表單上rs("areana")=明星美女的資料錄,全數會自動被刪或更改資料...

2.
另外當然還要刪除[明星美女]目錄或更改[明星美女]目錄名稱...
FileSystemObject物件,刪除_fs.DeletFolder(strFolder),更名_fs.MoveFolder FolderPath, NewFolderPath
有點浪費系統資源說...

分頁模式:可顯示上十頁,下十頁
相片分享:單張下載,多選email給朋友(使用ASPEmail元件或JMAIL元件)
ASPEMAIL元件可以直接資料庫抓圖送出檔案,如下
Mail.AddAttachmentMem rs("FileName").Value, rs("image_blob").Value

未來發展:希望能整合部落格,網路名片,電子報留言版等

後記

1.
Access的最大容納空間是2G,以1024*768而言,約莫是12,000就塞爆了..
如果你每天收集300張(可以用FileSystemObject物件批次寫入資料檔裡),那麼40天就玩完了....
唯一能作的,大概是拆成幾本相簿吧..(一本一個ACCESS檔)

2.
自動編號會因刪除而斷續,可以先改成數字,再整編
id=1
'開啟資料表單省略
Do until rs.EOF
rs("id")=id
rs.update
rs.MoveNext
id=id+1
Loop
然後再新增一個自動編號欄位,刪除改成數字欄位,自動編號欄位更名..

3.
除了批次新增,縮小圖檔也是必要的.....不然1600*1200,一個圖檔接近600K,3千多個圖檔,你一個ACCESS資料檔就玩完了...

4.
圖片添加浮水印


引用:
<%
Dim Jpeg
' 建立物件
Set Jpeg = Server.CreateObject("Persits.Jpeg")
' 打開目標圖片
Jpeg.Open Server.MapPath("/uploadpic/花卉攝影/Human/ml0001.jpg")

' 添加文字水印
Jpeg.Canvas.Font.Color = &HFFFFFF' 白色
Jpeg.Canvas.Font.ShadowColor = &H000000' 黑色
Jpeg.Canvas.Font.ShadowXoffset = 3
Jpeg.Canvas.Font.ShadowYoffset = 3
Jpeg.Canvas.Font.Family = "Book Antiqua"
Jpeg.Canvas.Font.Bold = True
Jpeg.Canvas.Font.Italic = True
Jpeg.Canvas.Font.size = 24
'Jpeg.Canvas.Font.Quality = 4 ' Antialiased
'Jpeg.Canvas.Font.BkMode = "Opaque"
Jpeg.Canvas.Print 10, 15, "Copyright (c) 藍色小鋪 www.blueshop.com.tw"
Jpeg.Save Server.MapPath("/uploadpic/花卉攝影/Human/ml0001_framed.jpg")
Set Jpeg = Nothing
%>

搜尋相關Tags的文章: [ aspupload ] , [ asp上傳元件.資料庫圖檔讀取與寫入 ] , [ 網路相簿 ] ,
本篇文章發表於2007-12-28 04:09
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
目前尚無任何回覆
   

回覆
如要回應,請先登入.