ASP怎么上传文件 如何在asp中使用无组件上传文件

2025-04-29 00:15:27

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程序中就可以了。具体处理方法,请参阅有关介绍。

二.文件上传实现方法实例

实现文件上传可使用组件或无组件方式。对于组件类,比如说microsoft posting acceptor(简称mpa),就是微软公司发布的一个免费服务器组件,这类组件的安装也比较方便。对于微软的mpa,运行它的安装文件就可以了。而一般的dll组件形式的,我们则需要进行注册。例如,要使用aspcnUP.dll,只要在Window 2000上执行regsvr32 [path\]aspcnUP.dll,系统出现注册成功的信息提示就可以使用该组件了;对于无组件类,在使用时,只要在处理程序中包含以下的语句就可以了:

<!--#include FILE="upload.inc"-->

set upload=new upload_5xSoft '建立上传对象

有关的属性与操作方法,请参阅该组件的使用手册。

下面是以aspcnUP.dll组件为例,上传部分类型文件的源代码(upload.asp):

<% @ language="vbscript"

  Set fileUP=Server.CreateObject("aspcn.Upload")

  fileUP.Maxsize=200000

  fileUP.Path="d:\upfile"

  fileUP.Upload

  For i=0 to fileUP.Count

   fieldname=fileUP.FieldName(i)

   If fileUP.FileType(fieldname)="zip" Or ileUP.FileType(fieldname)="rar" Then

    fileUP.Save fieldname

   End If

  Next

  Set fileUP=Nothing

%>

如何在asp中使用无组件上传文件

2个文件第一个文件:

第二个:0 then select case Uprequest.form("file_Err") case 1:str="

上传不成功!文件超过"&uploadsize&"k [

重新上传

]

" case 2:str="

上传不成功!文件格式不对 [

重新上传

]

" case 3:str="

上传不成功!文件太大且格式不对 [

重新上传

]

" end select response.write str else response.write "" response.write ""size=Uprequest.Form("file_size")showsize=size & " Byte" if size>1024 then size=(size\1024) showsize=size & " KB" end if if size>1024 then size=(size/1024) showsize=formatnumber(size,2) & " MB" end if response.write "" response.write "

文件上传成功

[

重新上传

]

" end ifSet Uprequest=nothingend ifresponse.write ""end sub%>

如何在ASP.NET中实现多文件的上传

给你些建议哦:

1.多文件上传没有必要动态添加FileUpLoad,因为这种工作并没有带来多大的收益,因为你完全可以放置4个到5个FileUpLoad控件,用户上传一般不会很多,假如超过5个也可以分多次上传。

2.如果想动态添加,你首先要判断用户还是否有下个文件上传,所以你必须添加一个BUTTON或者LABEL来让用户确认,比如:“上传下一个文件”,用户点击的事件里写:FileUpLoadFUL=newFileUpLoad();FUL.Name="FUL"+Convet.ToString(i);//这个i是你要定义的全局变量,用于记录用户在同一次上传中点击了几次控件。点一次自加1,初始为0this.Controls.Add(FUL);i++;获得路径就通过这个i,写个循环来获得,这样LZ应该思路很清楚了吧。

怎么把ASP源码上传到空间里面,使他成为一个网站

先在本地测试好,或直接用ftp上传到空间根目录下,把源码中的首页文件index.asp或index.thml或别的首页文件名设置为空间默认首选文件,然后解析/绑定好域名就可以成为一个能用域名网址访问的网站了

友情链接: base64 分词 迷你小数字