金色的骷髅 发表于 2015-1-16 23:22:17

ASP编程:ASP无组件上传图片的基础办法

ActiveServerPage技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工作的。上传|上传图片|无组件  上面是ASP无组件上传图片的一个例子:

  <html>
  <head><title>文件上传</title></head>
  <body>
  <formenctype="multipart/form-data"action="upload.asp"method="post">
  请选择要上传的文件:<br>
  <inputname="picture"type=fileaccept="image/*"><br>
  <inputtype=submitvalue="上传"></form>
  </body>
  </html>

  当html文件在NetscapeNavigator(3.0以上版本)或InternetExplorer(4.0以上版本)下显现时,“扫瞄”键中间会呈现一个看上往很一般的文本框。用户可间接将文件名键进文本框,或用“扫瞄”键从文件对话框当选择一个文件。提交该表单时,用户所选文件被同时提交。
  <form>标签的enctype特性划定了哀求表单信息的编码范例。表单信息一样平常接纳URL编码制。不外上传文件时,必需用enctype="multipart/form-data"特性。
  实践的文件上载键用上面的标签创立:
  <inputname="picture"type=fileaccept="image/*">
  由于type的特性值是file,以是扫瞄器会创立一个文件上载键。accept特性限定了在文件对话框中呈现的特定文件,这类情形下文件范例限定为图文件。能够划定任何MIME范例的清单作为accept的特性值。
  文件上载键十分有效,遗憾的是很多扫瞄器只是部分撑持上载键。比方NetscapeNavigator(3.0及4.0版本)疏忽了accept特性,IE3.0版本乃至更差,它完整不克不及注释上载键,而是显现一般的文本框。不外IE4.0和5.0版本可辨认文件上载键。
  创立带文件上载键的html表单只是上传文件的第一步,提交带上载键的文件不克不及用request工具的一般办法取得文件内容。ASP中request工具有专门用作此目标的特别办法。当表单被邮递后,request工具的BinaryRead()办法用来读取提交的原始字节。注重:一旦在ASP中利用了BinaryRead()办法,就不克不及用一般的Request.Form()办法猎取表双数据了(反之亦然)。
  假定用户利用后面提到的表单提交了一幅图片,那末能够用上面的剧本猎取并显现提交的原始字节。

  <%
  FormSize=Request.TotalBytes
  FormData=Request.BinaryRead(FormSize)
  Response.BinaryWriteFormData
  %>

  下面的剧本用Request工具的TotalBytes特性猎取送进http站点的字节数。然后,一切的表双数据被赋给名为FormData的变量。最初用Response工具的BinaryRead()办法输入上载的数据内容。
  可是用这类办法输入的剧本不是完整可读的,它包括上载文件的一切原始数据及有关该文件内容的主要信息。
  失掉数据后能够保留在数据库中、文件中或仅仅显现它,乃至能够疾速地改动原始图象数据来创立定制图象。上面的剧本往失落了文件头,并显现作为图象在扫瞄器上载的文件。

  <%
  FormSize=Request.TotalBytes
  FormData=Request.BinaryRead(FormSize)
  bnCRLF=chrB(13)&chrB(10)
  Divider=LEFTB(FormData,INSTRB(FormData,bnCRLF)-1)
  DataStart=INSTRB(FormData,bnCRLF&bnCRLF)+4
  DataEnd=INSTRB(DataStart+1,FormData,divider)-DataStart
  Response.ContentType="image/gif"
  Response.BinaryWriteMIDB(FormData,DataStart,DataEnd)
  %>

  下面的剧本用INSTRB()函数从表双数据中摘出图像数据,找到肇端地位。它假定图像数据以两个回车和换行符入手下手,并以一样的分开符停止。然后用Response工具的ContenType划定送进扫瞄器的内容是GIF图像。最初用BinaryWrite()办法输入数据。图片就显现在扫瞄器上。
  下面的剧本假定提交的表单只包括一个含有图象数据的域。不外包括文件上载元素的html表单还可包括其他尺度元素,比方文本框、文本区等。
  只管能够用尺度的ASP剧本处置庞大的表单,但最好仍是利用第三方ASP组件,能够用与处置尺度html表单的不异办法,处置包括文件上载元素的表单。
</p>大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.NET版会好点吧

飘灵儿 发表于 2015-1-20 09:43:28

还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。

兰色精灵 发表于 2015-1-24 19:15:26

交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。

飘飘悠悠 发表于 2015-2-2 12:31:12

以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。

乐观 发表于 2015-2-7 19:33:47

学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。

山那边是海 发表于 2015-2-23 08:15:56

运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。

谁可相欹 发表于 2015-3-7 05:54:44

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

只想知道 发表于 2015-3-14 12:11:48

学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。

再现理想 发表于 2015-3-21 06:19:44

我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
页: [1]
查看完整版本: ASP编程:ASP无组件上传图片的基础办法