设为首页 | 收藏本站
首页>IT学院>软件编程>正文
ASP文件上传原理分析
WWW.DBIT.CN 2006-8-27 19:57:57 热度:
 


  Software Artisans的SA-FileUp是最早的商业Active Server之一。几经改进,现在作为一个纯粹的ASP存在。

  二.基于ASP的文件上传实现原理分析

  基本原理是:采用ADO Stream对象的BinaryRead方法将FORM中的所有数据读出,从中截取出所需的文件数据,以二进制文件方式存盘。

  下面是上传文件页面的一个例子(upload.htm):

<html>

<body>

<form name="Upload" Method="Post" Enctype="multipart/form-data" 
Action="Upload.asp">

<input type="file" name="FileName">

<INPUT TYPE="Submit" VALUE="Upload"></TD>

</form>

</body>

</html>

        程序中使用了文件对象,这样在Upload.asp中采用BinaryRead方法读来的原始数据就不仅仅是选择的文件本身的数据,还包含该文件在用户硬盘上的路径、类型、提交页面的表单等相关信息的描述,这样我们就需从中提取出文件的具体内容。根据分析,数据的头部信息与数据的分界线是两对回车换行符,尾部也有分隔信息,我们可以采用类似以下的方法获取文件数据。

Dim FormData.FormSize,DataStart,CLStr,DivStr
FormSize=Request.TotalBytes
FormData=Request.BinaryRead(FormSize)
CLStr=ChrB(13)&ChrB(10)
DataStart=InStrB(FormData.CLStr&CLStr)+4
'4是两对回车换行符的长度
DivStr=LeftB(FormData,InStrB(FormData,CLStr)-1)
DataSize=InStrB(DataStart+1,FormData,DivStr)-DataStart-2
FormData=MidB(FormData,DataStart,DataSize)

  FormData就是文件的内容了。 

  中间根据需要,可进行相应的处理。最后的工作就是将文件保存了。保存的方法可以有两种:一种是利用VB或VC之类程序中的二进制文件操作方法,在工程中加入适当的类型库,最终编译成DLL文件,使用时再将该DLL文件注册就可以了。文件存贮程序如下:

    Public Function SaveFile(Pathname As String) As String 
    Dim objContext As ObjectContext 
    Dim objRequest As Request 
 Set objContext=GetObjectContext() 
    Set objRequest=objContext("Request") 
    '以下的一段代码是进行文件存贮的有关操作
 Dim FormData() As Byte,CLStr,DivStr 
    Dim DataStart As Long,DataSize As Long 
    DataSize=objRequest.TotalBytes 
    Redim FormData(DataSize-1) 
    FormData=objRequest.BinaryRead(DataSize) 
    CLStr=ChrB(13) & ChrB(10) 
    DataStart=InStrB(FormData,CLStr & CLStr)+4 
    DivStr=LeftB(FormData,InStrB(FormData,CLStr)-1) 
    DataSize=InStrB(DataStart+1,FormData,DivStr)-DataStart-2 
    FormData=MidB(FormData,DataStart,DataSize) 
    '创建一个二进制文件并将FormData写入其中 
    Open Pathname For Binary As 1 
    Put #1,,FormData 
    Close #1 
    SaveFile="OK!" 
   End Function

第二种方法是利用ADO STREAM中提供的二进制文件操作方法来完成,保存文件的语句是: StreamOBJ.SaveToFile  (fileName,2)。在 这种操作中,我们可以将有关的操作存放在一个类文件中,在应用时,直接将该类文件包含在ASP程序中就可以了。具体处理方法,请参阅有关介绍。

本新闻共3页,当前在第2页  1  2  3  

 
上一篇:PHP生成静态页面详解
下一篇:Access数据库的一点经验
打印】【关闭
  相关文章:
·用ASP+CSS实现随机背景·ASP.NET2.0数据库入门之SQL Serve
·ASP正则表达式详解·安装ASP.NET运行环境
·ASP.NET 2.0后台代码与内联代码的·ASP生成静态页面方法
·对你的ASP程序作负载测试·ASP数据库语法总结
·防止网站内容被人小偷和采集的ASP·ASP常用数据库连接及操作的方法和
☆联姻学院☆

保养电脑的26个窍门
文件夹删除不掉怎么办?
教你如何用手工迅速剿灭QQ广告
“熊猫烧香”病毒的病毒描述和
在Excel中只打印图表以外区域
Excel中只选中包含文本的单元
Windows XP操作系统的几个实用
用XP系统自带网络诊断程序解决
风雨雷电→自然现象动画实战技
Flash遮罩特效之百叶窗效果
十二个Dreamweaver鲜为人知的
如何用 Dreamweaver 批量做we
JavaScript的系统函数学习
Java之父:关于Java我也有遗憾
排除网上邻居使用4大常见麻烦
解除上网限制IP和MAC捆绑的破