用ASP代码实现图片写入数据库

用ASP代码实现图片写入数据库 2006-07-22 15:57:40 / 天气: 阴雨 / 心情: 高兴 / 个人分类:学习&工作 首先我们先来熟悉一下将要使用的对象方法。我们用来获取上一个页面传递过来的数据一般是使用Request对象。同样的,我们也可以使用Request对象来获取上传上来的文件数据,使用的方法是Request.BinaryRead()。而我们要从数据库中读出来图片的数据显示到网页上面要用到的方法是:泌阳一高校友网N S/] ~%~0P'e`v// 0V#VTD;@$C0  Request.BinaryWrite()。在我们得到了图片的数据,要保存到数据库中的时候,不可以直接使用Insert语句对数据库进行操作,而是要使用ADO的AppendChunk方法,同样的,读出数据库中的图片数据,要使用GetChunk方法。各个方法的具体语法如下:泌阳一高校友网5@:C ~Ttbi&U;B 泌阳一高校友网1`~W'C|/c   * Request.BinaryRead语法:泌阳一高校友网3|M~#P%?e[:C.h O3/y;]G!GM0  variant = Request.BinaryRead(count)泌阳一高校友网 Z]*Y_:nM?+T/w)?*K+c h 4TYj N9U]H+d0  参数 vi4T q-F;y9E0泌阳一高校友网?1G^{*B3f   variant泌阳一高校友网)Z fFViGX$Su 泌阳一高校友网8hnPe0o]'i   返回值保存着从客户端读取到数据。泌阳一高校友网+HWMZ6W^:^ v 泌阳一高校友网 LrL+_/D3e   count指明要从客户端读取的数据量大小,这个值小于或者等于使用方法泌阳一高校友网vP0MM:|%G^+?6^H ~#u!u7WYj"jeQ0  Request.TotalBytes得到的数据量。 Z7c^(_ R&F0 @4o:xz0i0EzX0  * Request.BinaryWrite语法: .tc5~ x'Id0泌阳一高校友网k/3} w1y7u*{   Request.BinaryWrite data H)saiZ%b,J#^3[5J(R0泌阳一高校友网3AV)g@*B&nR'L/%C|   参数泌阳一高校友网&mS[[q8[ 泌阳一高校友网 Bw%irild   data要写入到客户端浏览器中的数据包。 f!g+RR KVc6^0泌阳一高校友网+z4{|yQ   * Request.TotalBytes语法: fk2x1[s ]K}0 Fr!b"Hi0  variant = Request.TotalBytes泌阳一高校友网X xdTBW:i:R 泌阳一高校友网+?e1tO*kT~3e   参数 7iG&~&ozl n;s0泌阳一高校友网1?'N6V/)l   variant返回从客户端读取到数据量的字节数。 1J(s&zQvY0泌阳一高校友网6r1q*sKDd_#M|.V   * AppendChunk语法泌阳一高校友网9Sv^FB G8Z (QM)Y|a p0  将数据追加到大型文本、二进制数据 Field 或 Parameter 对象。泌阳一高校友网 ?+vz#N0e JI;E 泌阳一高校友网/"J!Z;x0kNi)xg,H   object.AppendChunk Data ABLH i!F8Nd$_qE0 '|EOY$d0  参数 m0q#Ljp O'@:Q0泌阳一高校友网(KU uUD0^2W zXt   object Field 或 Parameter 对象Data 变体型,包含追加到对象中的数据。泌阳一高校友网-l?7W'DfEM H+R+Y Q 4J#["W1[5O)D0  说明泌阳一高校友网c L'zx8Wgt6~8u;SS 泌阳一高校友网s(O.]OO_pX   使用 Field 或 Parameter 对象的 AppendChunk 方法可将长二进制或字符数据填写到对象中。在系统内存有限的情况下,可以使用 AppendChunk 方法对长整型值进行部分而非全部的操作。 #`4[oGwrI FD&N*Sv0 dGM0L"Fb/b;S6r0  * GetChunk语法 d)T}1_m5O;J4e3Gp0泌阳一高校友网b~-G7K;N   返回大型文本或二进制数据 Field 对象的全部或部分内容 。泌阳一高校友网;|Bh*ZT5H D 泌阳一高校友网 hvP:k#SE;L*AmC*x   variable = field.GetChunk( Size ) '`wpI$gg.tZp0 KVs L;s2q,T0  返回值 W.P:X:tf#G0 &S {.|:A bw2R0  返回变体型。泌阳一高校友网6vSnE3NHwJq 泌阳一高校友网~hNk.W3c2At   参数 !MN3Gm's.Kr9QP0 -H8f q{3as0  Size 长整型表达式,等于所要检索的字节或字符数。 1XB'}.A/R n7u c0 P0cCm!b)vE1p*M7E0  说明泌阳一高校友网|%E k@0P:A6K M ]W*C M ^eMK0  使用 Field 对象的 GetChunk 方法检索其部分或全部长二进制或字符数据。 z)yb5K`0泌阳一高校友网@ ZW HlS   在系统内存有限的情况下,可使用 GetChunk 方法处理部分而非全部的长整型值。 P!qM%Z%S b{0 {G#{T Ef&h0  GetChunk 调用返回的数据将赋给“变量”。如果 Size 大于剩余的数据,则GetChunk 仅返回剩余的数据而无需用空白填充“变量”。如果字段为空,则GetChunk 方法返回 Null。 t0b3hPp ?:|0 / W:c)Reei)~Jb0  每个后续的 GetChunk 调用将检索从前一次 GetChunk 调用停止处开始的数据。但是,如果从一个字段检索数据然后在当前记录中设置或读取另一个字段的值,ADO 将认为已从第一个字段中检索出数据。如果在第一个字段上再次调用 GetChunk 方法,ADO 将把调用解释为新的 GetChunk 操作并从记录的起始处开始读取。如果其他 Recordset 对象不是首个 Recordset 对象的副本,则访问其中的字段不会破坏 GetChunk 操作。泌阳一高校友网d;//k@ Z5v 泌阳一高校友网7Wg ^3a+n^$@ ~T&{b   如果 Field 对象的 Attributes 属性中的 adFldLong 位设置为 True,则可以对该字段使用 GetChunk 方法。泌阳一高校友网,~ C K{v 泌阳一高校友网 d#[n:b _/g#q   如果在 Field 对象上使用 Getchunk 方法时没有当前记录,将产生错误 3021(无当前记录)。 @9g3Lk0b1U.P[4az0泌阳一高校友网1l!?_ ] f,v   接下来,我们就要来设计我们的数据库了,作为测试我们的数据库结构如下(Access97): ruF,h^0_+Nf7Z"TAS0泌阳一高校友网8~(M"X"vED+A 字段名称    类型    描述泌阳一高校友网4H1c*F i0{dh'm 泌阳一高校友网+f(hN)^ |(b X]   id    自动编号   主键值 T `` i3YIW0H1K0 D!|9v!ci2[f;QAnzb5N0img OLE对象   用来保存图片数据  %v4d |QhQ0泌阳一高校友网;rAv1^DV7] d)K-v ;u e$p,c/? x,V['_0a`+]s0 B P z&Fzb;P.j0  对于在MS SQL Server7中,对应的结构如下:泌阳一高校友网+@ Yz8Fg)?qX"CRi 泌阳一高校友网.cNC&FF4UUIq-F 字段名称    类型    描述 `jM3m@0 8`Uy.@ ml#]0  id     int(Identity) 主键值 ;r!ojuLKm0 &[Yh(o1Z"w?'G0img   image     用来保存图片数据 泌阳一高校友网E8L5DB RH 泌阳一高校友网[}7d0e+n3Bf8r {}Re 泌阳一高校友网@'uQ$R3n/J W   现在开始正式编写我们的纯ASP代码上传部分了,首先,我们有一个提供给用户的上传界面,可以让用户选择要上传的图片。代码如下 )AA.zp O0 &}q6}Y){A0(upload.htm):泌阳一高校友网P&o"Wjt_ mjL}$x5F0泌阳一高校友网0_"Ip2Mp8xC 泌阳一高校友网R(E(dd2GBK6VXt 泌阳一高校友网J&GA Y@v iH9_ 泌阳一高校友网;`K v5]1x
泌阳一高校友网$@}1~(j;kN 泌阳一高校友网4D/Rx,v6{Y   
泌阳一高校友网6Dk0m)DZ9N&^"G.KI['D +NaU3M6Pod)|O0    
8@p@3zdn*P0 XW1k0`#b$A0   泌阳一高校友网QH5K"jWnD8wY 泌阳一高校友网`X3MR9Y#B   
g$`*w|w G4Kl0泌阳一高校友网X nR0b'a4sE'TF
泌阳一高校友网(|'o vBVF9qt 泌阳一高校友网$M N3G9f2lc&I fy 1s|1G_!qc U0泌阳一高校友网5X4Ug,GI 泌阳一高校友网kN2w:W4W A ~/S'W-[nl)g Fs&]0  注意代码中黑色斜体的部分,一定要在Form中有这个属性,否则,将无法得到上传上来的数据。 'zn#s.T ^0泌阳一高校友网8T1bw[9Bg   接下来,我们要在process.asp中对从浏览器中获取的数据进行必要的处理,因为我们在process.asp中获取到的数据不仅仅包含了我们想要的上传上来的图片的数据,也包含了其他的无用的信息,我们需要剔除冗余数据,并将处理过的图片数据保存到数据库中,这里我们以Access97为例。具体代码如下(process.asp): #eA o@"N0泌阳一高校友网v$X"~9ZR 泌阳一高校友网 }o+Y}M:D;E q3Z 泌阳一高校友网$^M bS2vp,Y   好了,这下我们就把上传来的图片保存到了名为images.mdb的数据库中了,剩下的工作就是要将数据库中的图片数据显示到网页上面了。一般在HTML中,显示图片都是使用 标签,也就是 ,但是我们的图片是保存到了数据库中,“图片路径”是什么呢?呵呵,其实这个SRC属性除了指定路径外,也可以这样使用哦: 1_ `]5po)B7/!v0 -_&Gkf}7g0?G0 &y$_V%zFa9]-ws0泌阳一高校友网(^.J0oU t;f8QHz:k   所以,我们所要做的就是在showimg.asp中从数据库中读出来符合条件的数据,并返回到SRC属性中就可以了,具体代码如下(showimg.asp): t$^m*o J7oz0泌阳一高校友网d0GG3Seg F 泌阳一高校友网&I+Q2Y#d _U7AH-k 泌阳一高校友网L_4db#l   注意在输出到浏览器之前一定要指定Response.ContentType = "image/*",以便正常显示图片。 L'F#~!n"RG q6^0泌阳一高校友网hni1z&K.M'g:o   最后要注意的地方是,我的process.asp中作的处理没有考虑到第一页(upload.htm)中还有其他数据,比如 等等,如果有这些项目,你的process.asp就要注意处理掉不必要的数据。 a1A-M_ HV6k0泌阳一高校友网x/N {OV7b.Y8I D;Lao   怎么样,其实上传图片并保存到数据库很简单吧,这样再也不用为自己的空间无法使用各类的上传组件发愁了吧。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值