6行代码实现ASP无组件上传

本文介绍了一种仅用6行代码实现ASP无组件文件上传的方法,通过ADODB.Stream对象以二进制方式读取并保存文件,提供了一个简单的上传示例。

目前有很多无组件上传类,我大概看了一下,大多写的相当复杂,有的居然还只能传文本,最关键的是没有10行代码以下的:),我花了一个晚上时间研究了一下ADODB.Stream,并且用了6行代码实现了无组件上传:
upload.asp 文件代码
<%
strFileName = Request.QueryString("fn")
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1 'adTypeBinary 二进制方式
objStream.Open
objStream.LoadFromFile strFileName
objStream.SaveToFile Server.MapPath("zslogo.gif"),2
%>
使用方法
在浏览器里面输入:
http://xxx/upload.asp?fn=c:/上传文件/123.gif
其中xxx为你的网站域名地址,比如:www.jzxue.com
执行完后你会看到你的目录下面多了一个zslogo.gif,就是你刚才上传的文件拉!
根据ASP无组件上传原理,我们把上面的代码扩展为以下代码:
upload.asp 文件代码
<%
Function GetFileName(ByVal fn)
If fn<>"" Then GetFileName=mid(fn,InStrRev(fn,"/")+1) Else GetFileName=""
Endfunction

strFileName = Request.Form("file1")
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1 ' adTypeBinary
objStream.Open
objStream.LoadFromFile strFileName
objStream.SaveToFile Server.MapPath(GetFileName(strFileName)),2
objStream.Close
%>
upload.htm 文件代码
<form name="upform" action="upload.asp" method="post" enctype="multipart/form-data">
<input type="file" name="file1" style="width:400px;" value="" />
<input type="submit" name="submit" value="上传文件" />
</form>

艾恩ASP无组件上传类,不敢夸口说多完美,但能实现基本的功能.包括提取表单数据、上传到不同文件夹、保存到数据库(上传和保存表单可同时进)、限制上传扩展名、限制上传大小、选择文件保存类型(原文件名和时间随机命名)等! 本类可以完整保存用户信息,包括同名称表单(和request.form一样以,为分割符进保存),以及文件域的客户端路径。 处理完数据后,程序会提供两个方法-----files和forms,通过这两个方法实现文件的保存以及信息的读取,并且可以调用fileaction类的GetBytes方法获取文件的二进制数据,可以把此数据保存到数据库(作者不推荐把二进制保存到数据库,会影响数据库性能)。 此类最大的优点更多表现在多文件上传,即可以使用循环把所有文件保存到同一目录,又可以单独操作保存到不同目录,灵活性相当高,完全脱离其他任何对象的束缚。并且可以自主选择保存方式--以原文件名保存或以程序自动生成的文件名(时间+随机数字)保存 本类特点: ?尽量追求简洁,减少赘余代码 ?全面保存客户提交的信息(普通表单,文件域值,相同表单值) ?准确获取上传中的错误信息 ?可选择文件保存方式(以原文件名保存和以新文件名保存,新文件名为时间+随机数字组 ?文件保存函数简洁,调用方便,并且比较灵活(保存路径和保存方式可随时改变) ?同时可以获取文件的二进制形式,从而可以实现将二进制数据保存到数据库 ?灵活运用本类,可以实现表单数据和文件同时编辑(这是一般类无法达到的) ?更多的用途靠大家来发现了..... ?Demo里面有几个个很简单的例子,能掌握这几个个例子一定可以灵活使用本类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值