|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
结论:和PHP一样,ASP简单而易于维护,很适合小型网站应用,通过DCOM和MTS技术,ASP甚至还可以完成小规模的企业应用,但ASP的致命缺点就是不支持跨平台的系统,在大型项目开发和维护上非常困难。上传 弁言
接纳WEB手艺完成B/S(扫瞄器/服务器)布局的办理体系是办公主动化的开展趋向。基于WEB手艺的办理体系,因为开辟周期短;与用户平台有关;易于完成交互式使用;能对信息举行疾速、高效的搜集、处置和公布,近几年来失掉了敏捷开展。而ASP手艺因为其开辟效力高、交互性好,平安性强等特性,渐渐成为开辟办理体系的首选工具。
很多基于WEB的使用都触及文件上传操纵。罕见的文件上传手艺有:基于HTTP协定的;基于VB(或DELPHI等编程言语)开辟的文件上传组件的;基于数据库手艺的等等。这些办法一样平常都必要编程者能同时把握WEB手艺、数据库手艺或CGI手艺或组件手艺,对编程者的请求较高。而本文将先容的使用ASP手艺间接完成文件上传功效则只需编程者把握单一的ASP手艺便可,年夜年夜下降了编程难度。
几种文件上传手艺的对照
1、基于HTTP协定
该办法必要编程者使用第三方软件,如DELPHI、VB等,在使用程序中先辈行HTTP协定编程,然后将待上传文件内容按HTTP协定的格局打包,最初向WEB服务器发奉上传的哀求报文,从而完成文件的上传。由于DELPHI和VB不克不及编写完全的WEB收集程序,只能编写WEB小使用程序,因而,该办法只用于功效受限的收集使用。
2、基于VB(或DELPHI等)开辟的文件上传组件
该办法使用VB(或DELPHI等编程言语)开辟ASP服务器组件,完成特定的文件上传服务。它起首使用ASP表单功效将文件(二进制格局)从用户端上传到服务器端,然后利用VB开辟的组件,对二进制文件举行处置,成为能够一般读写的文件。该办法请求编程者不但把握ASP言语,并且还能使用VB品级三方言语举行组件编程,增添了开辟的难度。
3、基于数据库手艺
该办法和上个办法有相似的地方。分歧的中央在于对上传的二进制文件的处置上。它利用数据库来保留二进制文件。不管是小型数据库仍是年夜型数据库都供应了存储二进制数据的数据范例,只需以AppendChunk体例将数据存进响应的字段就能够了。该办法固然复杂可行,可是由于每次上传的文件巨细都是纷歧样的,因而,会对数据库的空间形成很年夜的华侈,下降了数据的会见速率;而且使得文件只能在数据库情况下举行会见,形成了很年夜的方便。
实例剖析
可是,使用ASP手艺间接完成文件上传功效则只需编程者把握单一的ASP手艺便可,
年夜年夜下降了编程难度。上面我们将经由过程一个实例来先容怎样利用该办法。
1、文件上传表单
起首必要编写一个能供应文件上传功效的表单,程序以下所示:
<Formaction="upload.asp"method=postenctype="multipart/form-data">
上传文件:<Inputtype=filename=file1><br>
<inputtype=submitname=uploadvalue="上传">
</form>
个中,enctype参数用来设置表单的MIME编码体例,在举行文件(或同时包括文本框)上传时,必需将其属性设置为"multipart/form-data";upload.asp是服务器端对吸收到的二进制文件流举行处置的ASP程序,在本文的前面将连续先容其内容。
2、上传文件格局剖析
在处置文件之前,我们要先懂得上传的文件的详细格局,经由过程编写上面一段复杂的ASP程序就能够检察其二进制代码:
<%
filesize=Request.TotalBytes取得上传文件的巨细
filedata=Request.BinaryRead(filesize)取得上传文件的二进制数据
Response.BinaryWritefiledata在扫瞄器上显现二进制数据
%>
剖析扫瞄器上显现的上传文件的二进制代码,发明代码包含四个部分(若同时上传多个文件或文本框,则代码按上传的前后序次分列,格局不异),每部分的内容是用回车换行标记来举行分开的:
1)第一部分(肇端标记)
-----------------------------7d329631b04d4
2)第二部分(文件申明)
Content-Disposition:form-data;name="file1";filename="C:DocumentsandSettingsAdministratorMyDocumentsInvitation.doc"Content-Type:application/msword
在此,我们能够取得上传文件的文件称号及相对路径,也能够取得文件范例。这些信息是准确保留文件所不成短少的。
3)第三部分(文件内容)
即文件的二进制内容,略。
4)第四部分(停止标记)
-----------------------------7d329631b04d4
分离第一部分和第四部分的内容来看,"-----------------------------7d329631b04d4"(每次上传,数值都纷歧样)起到了支解符的感化,它标记着一段数据(当有多个上传内容时)的入手下手和停止。从保留文件所必要的信息来说,我们起首必要从第二部分数据的"filename"中取得文件称号,然后必要准确定位文件的肇端地位,最初使用ASP手艺将二进制文件用原本的文件名保留便可。若同时上传多个内容(如多个文本框和文件),也是按一样的办法处置,每部分的内容都包括在支解符当中,只是文本框和文件的体现情势稍有分歧,这能够经由过程详细剖析其二进制代码来懂得。
3、使用ASP手艺完成文件存储
上传文件代码的处置
1)取得支解符代码
从下面的剖析我们已晓得,支解符起到了支解多个数据段(包含文本框和各类范例的文件)的主要感化。后面已剖析过,支解符呈现在第一个回车换行标记前。因而,经由过程上面这段程序便可取得支解符代码:
<%
newline=chrB(13)&chrB(10)newline暗示二进制的回车符
filesize=Request.TotalBytesfilesize是上传文件的巨细
filedata=Request.BinaryRead(filesize)filedata是上传文件的二进制数据
divider=leftB(filedata,clng(instrb(filedata,newline))-1)divider是支解符
%>
注:由于这里处置的都是二进制字节码,因而,一切的函数都是利用它的二进制版本,加了"b"。
SQLServer是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。 |
|