ASP 无组件上传


ASP 无组件上传

说明:从网上收集了一部分,自己写了一部分。主要提升就是对于form的二进制数据进行了类封装,可以容易的得到form内的元素的信息。

Form 二进制数据格式:

分割标志数据 + 0x0D0A

元素说明信息 + 0x0D0A0D0A

元素内容数据 + 0x0D0A

分割标志数据 + 0x0D0A

元素说明信息 + 0x0D0A0D0A

元素内容数据 + 0x0D0A

……

分割标志数据 + 0x0D0A

1. Upload.htm

<html>

  <head><title>文件上传</title></head>

  <body>

<form enctype="multipart/form-data" action="upload.asp" method="post">

<input name="text0" type=text value="文本框"><br>

<input name="file1" type=file accept="image/*"><br>

<input name="file2" type=file accept="image/*"><br>

<input type=submit value="上传">

</form>

  </body>

</html>

2. upload.asp

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

<%

'by sam 2004,6

'###############################################################################

response.expires = 0

if request.servervariables("REQUEST_METHOD")="POST" then

response.clear()

response.buffer=true

set uform = new uploadform

uform.find_element "text0"

data = midb(uform.formdata,uform.datastart,uform.datalen)

Response.binaryWrite data

sdata = binarytostring(data)

Response.write sdata

Response.binarywrite stringtobinary(sdata)

uform.find_element "file1"

savefile server.mappath("/recv1.dat"),uform.formdata,uform.datastart,uform.datalen

uform.find_element "file2"

savefile server.mappath("/recv2.dat"),uform.formdata,uform.datastart,uform.datalen

set uform = nothing

end if

%>

3. upload.inc

<%

'by sam 2004,6

'#################################################################

function savefile(filename,formdata,start,len)

set strm1=server.createobject("adodb.stream")

set strm2=server.createobject("adodb.stream")

strm1.open

strm1.type=1 'binary

strm2.open

strm2.type=1 'binary

strm1.write formdata

'strm1.savetofile server.mappath("/1.raw"),2

strm1.position = start - 1

strm1.copyto strm2,len

'strm2.savetofile server.mappath("/1.gif"),2

strm2.savetofile filename,2

set strm1=nothing

set strm2=nothing

end function

function simplebinarytostring(binary)

dim i, s

for i = 1 to lenb(binary)

s = s & chr(ascb(midb(binary,i,1)))

next

simplebinarytostring = s

end function

function binarytostring(binary)

dim cl1,cl2,cl3,pl1,pl2,pl3

dim l

cl1 = 1

cl2 = 1

cl3 = 1

l = lenb(binary)

do while cl1<=l

pl3 = pl3 & chr(ascb(midb(binary,cl1,1)))

cl1 = cl1 + 1

cl3 = cl3 + 1

if cl3>300 then

pl2 = pl2 & pl3

pl3 = ""

cl3 = 1

cl2 = cl2 + 1

if cl2>200 then 

%>

一、简介 自从接触ASP就开始接触上传,看过一些上传类,但是总感觉封装的还是不够简单,因此自己尝试写一个能够用最少最简单的代码实现各种上传方式的上传类。在学校期间就开始写,一点点的完善、优化,到现在的版本,现在的版本能适应各种上传方式。上 传类的主要的功能如下: 1、自由设置最大上传大小、单文件最大上传大小 2、自由设置允许上传的文件类型 3、可设置文本的编码,以适应各种上传环境 4、内置进度条,用户可选择开启和关闭 5、多种错误状态处理 6、多种文件保存方式:原文件名、随机文件名、用户自定义文件名 7、自由选择是否覆盖已存在文件 8、完整保存表单数据,支持同名表单,不支持同名文件域 注意: 1、特别注意Form一定要加上enctype="multipart/form-data"属性,method属性值必须是post,否则上传会出错 2、request.form()方法获取数据失效,请使用UpLoad.forms() 3、上传前请确认保存文件的文件夹有读写权限,若不可写则会出现"文件无法写入"错误,解决方法 http://dev.mo.cn/show.asp?id=81 二、调用方法 1、无组件类的调用方法: Dim Upload set Upload = new AnUpLoad 2、组件的调用方法: Dim Upload Set Upload = server.CreateObject("Anasp.Anupload") 注意:上传属性的设置必须在调用Upload.GetData()之前。 简单调用示例: Dim Upload set Upload=new AnUpLoad 'Set Upload = server.CreateObject("Anasp.Anupload") Upload.SingleSize=1024*1024*1024 '设置单个文件最大上传限制,按字节计;默认为不限制 Upload.MaxSize=1024*1024*1024 '设置最大上传限制,按字节计;默认为不限制 Upload.Exe="bmp|rar|pdf|jpg|gif" '设置合法扩展名,以|分割 Upload.Charset="gb2312" '设置文本编码,默认为gb2312 Upload.openProcesser=false '禁止进度条功能,如果启用,需配合客户端程序 Upload.GetData() '获取并保存数据,必须调用本方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值