仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 691|回复: 9
打印 上一主题 下一主题

[学习教程] ASP编程:用ASP完成文件间接上传功效

[复制链接]
乐观 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:46:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。
再见西城 该用户已被删除
沙发
发表于 2015-1-17 16:31:16 | 只看该作者
交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。
金色的骷髅 该用户已被删除
板凳
发表于 2015-1-20 20:16:45 | 只看该作者
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
分手快乐 该用户已被删除
地板
发表于 2015-1-29 20:34:09 | 只看该作者
我想问如何掌握学习节奏(先学什么再学什么)最好详细点?
蒙在股里 该用户已被删除
5#
发表于 2015-2-6 04:20:32 | 只看该作者
在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。
小妖女 该用户已被删除
6#
发表于 2015-2-15 13:20:54 | 只看该作者
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。
爱飞 该用户已被删除
7#
发表于 2015-3-4 11:34:01 | 只看该作者
如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。
admin 该用户已被删除
8#
发表于 2015-3-11 19:15:36 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
透明 该用户已被删除
9#
发表于 2015-3-19 09:12:39 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
飘飘悠悠 该用户已被删除
10#
发表于 2015-3-27 17:09:43 | 只看该作者
哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 05:06

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表