ASP网页编程之用纯ASP代码完成图片上传
帮助用户快速实现各种应用服务,ASP商有整合各方面资源的能力,可在短期内为用户提供所需的解决方案。例如,典型的ERP安装,如果要在客户端安装的话需要半年到二年的时间,但是美国的一些ASP商如USI和CORIO能在90—120天内提供ERP应用方案。上传源追风用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将把挪用注释为新的GetChunk操纵并从纪录的肇端处入手下手读取。假如其他Recordset工具不是首个Recordset工具的正本,则会见个中的字段不会损坏GetChunk操纵。
假如Field工具的Attributes属性中的adFldLong位设置为True,则能够对该字段利用GetChunk办法。
假如在Field工具上利用Getchunk办法时没有以后纪录,将发生毛病3021(无以后纪录)。
接上去,我们就要来计划我们的数据库了,作为测试我们的数据库布局以下(access2000):
字段称号 范例 形貌
id 主动编号 主键值
imgOLE工具 用来保留图片数据
关于在MSSQLServer7中,对应的布局以下:
字段称号 范例 形貌
id int(Identity) 主键值
img image 用来保留图片数据
如今入手下手正式编写我们的纯ASP代码上传部分了,起首,我们有一个供应给用户的上传界面,可让用户选择要上传的图片。代码以下
(upload.htm):
<html>
<body>
<center>
<formname="mainForm"enctype="multipart/form-data"action="process.asp"method=post>
<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.MapPath("images.mdb")&";uid=;PWD=;"
connGraph.Open
setrec=server.createobject("ADODB.recordset")
rec.Open"SELECT*FROMwhereidisnull",connGraph,1,3
rec.addnew
rec("img").appendchunkmydata
rec.update
rec.close
setrec=nothing
setconnGraph=nothing
%>
好了,这下我们就把上传来的图片保留到了名为images.mdb的数据库中了,剩下的事情就是要将数据库中的图片数据显现到网页下面了。一样平常在HTML中,显现图片都是利用,可是我们的图片是保留到了数据库中,“图片路径”是甚么呢?呵呵,实在这个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.</p>只要你想学,就没什么优缺点,上面那位大哥已经把网上的评论说了,但我认为想学哪个都一样,不然它就不可能在当今时代数字艺术方面存活到今天 ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。 哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的? 作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。 我想问如何掌握学习节奏(先学什么再学什么)最好详细点? ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题: 掌握asp的特性而且一定要知道为什么。 ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。 你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
页:
[1]