返回列表 发帖

[ASP] [推荐][推荐]Asp无组件文件上传的实例

asp无组件文件上传的实例
1.库文件(upload.inc.asp)
<%
dim oupfilestream
class upfile_class

dim form,file,version,err

private sub class_initialize
version = "无组件上传类 version v1.0"
err = -1
end sub

private sub class_terminate
'清除变量及对像
if err < 0 then
form.removeall
set form = nothing
file.removeall
set file = nothing
oupfilestream.close
set oupfilestream = nothing
end if
end sub

public sub getdata (retsize)
'定义变量
dim requestbindate,sspace,bcrlf,sinfo,iinfostart,iinfoend,tstream,istart,ofileinfo
dim ifilesize,sfilepath,sfiletype,sformvalue,sfilename
dim ifindstart,ifindend
dim iformstart,iformend,sformname
'代码开始
if request.totalbytes < 1 then
err = 1
exit sub
end if
if retsize > 0 then
if request.totalbytes > retsize then
err = 2
exit sub
end if
end if
set form = server.createobject ("scripting.dictionary")
form.comparemode = 1
set file = server.createobject ("scripting.dictionary")
file.comparemode = 1
set tstream = server.createobject ("adodb.stream")
set oupfilestream = server.createobject ("adodb.stream")
oupfilestream.type = 1
oupfilestream.mode = 3
oupfilestream.open
oupfilestream.write request.binaryread (request.totalbytes)
oupfilestream.position = 0
requestbindate = oupfilestream.read
iformend = oupfilestream.size
bcrlf = chrb (13) & chrb (10)
'取得每个项目之间的分隔符
sspace = midb (requestbindate,1, instrb (1,requestbindate,bcrlf)-1)
istart = lenb (sspace)
iformstart = istart+2
'分解项目
do
iinfoend = instrb (iformstart,requestbindate,bcrlf & bcrlf)+3
tstream.type = 1
tstream.mode = 3
tstream.open
oupfilestream.position = iformstart
oupfilestream.copyto tstream,iinfoend-iformstart
tstream.position = 0
tstream.type = 2
tstream.charset = "gb2312"
sinfo = tstream.readtext
'取得表单项目名称
iformstart = instrb (iinfoend,requestbindate,sspace)-1
ifindstart = instr (22,sinfo,"name=""",1)+6
ifindend = instr (ifindstart,sinfo,"""",1)
sformname = mid (sinfo,ifindstart,ifindend-ifindstart)
'如果是文件
if instr (45,sinfo,"filename=""",1) > 0 then
set ofileinfo = new fileinfo_class
'取得文件属性
ifindstart = instr (ifindend,sinfo,"filename=""",1)+10
ifindend = instr (ifindstart,sinfo,"""",1)
sfilename = mid (sinfo,ifindstart,ifindend-ifindstart)
ofileinfo.filename = mid (sfilename,instrrev (sfilename, "\")+1)
ofileinfo.filepath = left (sfilename,instrrev (sfilename, "\")+1)
ofileinfo.fileext = mid (sfilename,instrrev (sfilename, ".")+1)
ifindstart = instr (ifindend,sinfo,"content-type: ",1)+14
ifindend = instr (ifindstart,sinfo,vbcr)
ofileinfo.filetype = mid (sinfo,ifindstart,ifindend-ifindstart)
ofileinfo.filestart = iinfoend
ofileinfo.filesize = iformstart -iinfoend -2
ofileinfo.formname = sformname
file.add sformname,ofileinfo
else
'如果是表单项目
tstream.close
tstream.type = 1
tstream.mode = 3
tstream.open
oupfilestream.position = iinfoend
oupfilestream.copyto tstream,iformstart-iinfoend-2
tstream.position = 0
tstream.type = 2
tstream.charset = "gb2312"
sformvalue = tstream.readtext
if form.exists (sformname) then
form (sformname) = form (sformname) & ", " & sformvalue
else
form.add sformname,sformvalue
end if
end if
tstream.close
iformstart = iformstart+istart+2
'如果到文件尾了就退出
loop until (iformstart+2) = iformend
requestbindate = ""
set tstream = nothing
end sub
end class

'文件属性类
class fileinfo_class
dim formname,filename,filepath,filesize,filetype,filestart,fileext
'保存文件方法
public function savetofile (path)
on error resume next
dim ofilestream
set ofilestream = createobject ("adodb.stream")
ofilestream.type = 1
ofilestream.mode = 3
ofilestream.open
oupfilestream.position = filestart
oupfilestream.copyto ofilestream,filesize
ofilestream.savetofile path,2
ofilestream.close
set ofilestream = nothing
if err.number<>0 then
savetofile=err.number&"**"&err.descripton
else
savetofile="ok"
end if
end function

'取得文件数据
public function filedate
oupfilestream.position = filestart
filedate = oupfilestream.read (filesize)
end function
end class
%>



2.处理用户提交后的页面(upload.asp)
<!--#include file="upload.inc.asp"-->
<html>
<head>
<title>文件上传</title>
</head>
<body topmargin="0" leftmargin="0">
<table width=100% border=0 cellspacing="0" cellpadding="0"><tr><td class=tablebody1 width=100% height=100% >
<%
dim upload,file,formname,formpath,filename,fileext
dim rannum
call upfile()
'===========无组件上传(upload_0)====================
sub upfile()
set upload=new upfile_class '建立上传对象
upload.getdata (500*1024) '取得上传数据,此处即为500 k

if upload.err > 0 then
select case upload.err
case 1
response.write "请先选择你要上传的文件 [ <a href=# onclick=history.go(-1)>重新上传</a> ]"
case 2
response.write "图片大小超过了限制 500 k [ <a href=# onclick=history.go(-1)>重新上传</a> ]"
end select
exit sub
else
formpath=upload.form("filepath") '文件保存目录,此目录必须为程序可读写
if formpath="" then
formpath="rwdata/"
end if
'在目录后加(/)
if right(formpath,1)<>"/" then
formpath=formpath&"/"
end if
for each formname in upload.file '列出所有上传了的文件
set file=upload.file(formname) '生成一个文件对象
if file.filesize<100 then
response.write "请先选择你要上传的图片 [ <a href=# onclick=history.go(-1)>重新上传</a> ]"
response.end
end if

fileext=lcase(file.fileext)
if checkfileext(fileext)=false then
response.write "文件格式不正确 [ <a href=# onclick=history.go(-1)>重新上传</a> ]"
response.end
end if

'randomize
rannum=int(90000*rnd)+10000
filename=formpath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&rannum&"."&fileext
if file.filesize>0 then '如果 filesize > 0 说明有文件数据
result=file.savetofile(server.mappath(filename)) '保存文件
if result="ok" then
response.write formname&" upload ok, had saved to "&filename&"<br>"
else
response.write formname&" upload fail,"&result&"<br>"
end if
end if
set file=nothing
next
set upload=nothing
end if
end sub

'判断文件类型是否合格
private function checkfileext (fileext)
dim forumupload
forumupload="gif,jpg,bmp,jpeg"
forumupload=split(forumupload,",")
for i=0 to ubound(forumupload)
if lcase(fileext)=lcase(trim(forumupload(i))) then
checkfileext=true
exit function
else
checkfileext=false
end if
next
end function
%>
</td></tr></table>
</body>
</html>



3.html 表单(upload.html)
<!doctype html public "-//w3c//dtd html 4.01 transitional//en">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<title>asp 无组件上传</title>
</head>
<body>
请选择要上传的文件
<form action="upfile.asp" method="post" enctype="multipart/form-data" name="form1">
<input type="file" name="file">
<!--<br>
<input type="file" name="file">
<br>
<input type="file" name="file">
<br>-->
<input type="submit" name="submit" value="提交">
</form>
</body>
</html>

不错的。谢谢喽











bjcars.net

TOP

交流交流好啊!楼主真厉害











bjcars.net

TOP

好贴就是好贴

TOP

好贴就是好贴

TOP

謝謝,希望以後多些

TOP

沙发,板凳都没偶的份了。

TOP

终于看完了~~~

TOP

15221867609杨胜洁 QQ:499203274  Mail:shengjie52306#163.com (#改成@)

上海漕河泾双线机房/移动双线机房/真如电信机房/漕宝电信机房/科技网电信机房/张江电信机房,“100M共享至100M独享跑满“服务器租用/托管,机柜租用!
上海双线机房托管,上海沈家弄机房托管,上海张江机房托管租用
1u/托管租用费用/电信服务器/双线漕河泾机房/电信机房托管租用
服务器 服务 托管服务器托管服务器托管租用上海服务器托管北京服务器托管
上海久渠网提供企业上网服务 专线宽带服务,专线接入服务,点对点服务等
专线接入 北京专线接入 专线接入方式 adsl专线接入 上海专线接入

地址:上海市 曹杨路1040弄1号中友大厦1116、1118室


上海久渠信息技术有限公司以专业、高效的实时服务理念,为您提供全天候的技术支持、

稳定可靠的互联网接入资源以及专业化的服务器租用托管服务。


一.久渠网运维服务:

服务器托管,服务器租用,机柜租用,大带宽资源,系统代维服务等

二.运营机房:

以上海,浙江,江苏,山东为中心。覆盖面积华南,华东等大部分地方。多年的运营经验,贴心的服务

为广大用户服务器24小时保驾护航!

主力机房有:上海双线沈家弄机房、上海电信张江高科、上海电信真如机房、上海电信科技网机房、电信横浜机房,电信武胜机房,

上海电信漕宝机房、上海漕河泾BGP机房、上海移动怒江机房、上海市北双线双IP机房、浙江电信常熟机房、扬州双线机房等。

100M共享(保证10M带宽,可写入合同):

上海双线沈家弄机房 1U托管服务 5000元/年(保证10M带宽+1个IP)

上海电信科技网机房 1U托管服务 7500元/年(保证10M带宽+1个IP)

上海电信真如机房 1U托管服务 6200元/年(保证10M带宽+1个IP)

上海电信漕宝大楼 1U托管服务 4500元/年(保证10M带宽+1个IP)

上海移动怒江机房 1U托管服务 4000元/年(保证10M带宽+1个IP)


独享带宽(以1U为单位):

上海电信漕宝机房 30M独享18000元/年  

上海电信沈家弄   30M独享18000元/年

上海移动怒江机房 100M独享 20000元/年  

浙江电信常熟机房 100M独享 15000元/年

备注:更多机房带宽资源或G口带宽服务请在线咨询或电信来询!


三.公司(托管/租用)服务承诺:

1、久渠网免费为客户代装系统及指定软件;

2、7×24×365免费无限次快速响应重启服务;

3、7×24小时电话技术支持,机房365天工程师服务;

4、MRTG专业系统实时流量状态监控;

5、提供恒温、恒湿专用机房,多级智能保安系统、电视监控系统;

6、保证网络连通率99.9%;

7、标准100M共享带宽接入(另带宽10M-100M可选),免费提供一个固定IP;

8、合同签订付款后第二个工作日服务器上架;

9、品牌服务器硬件一年包换三年售后服务;

10、提供全方位的技术支持主要包括:技术咨询、状态监测、紧急情况通知、技术作服务。

顺便推荐个IDC实用工具-在线批量查询备案信息,让你服务器免受因绑定未备案域名而带来的风险   beian#hellojsp#com (#改成.)

TOP

厉害啊!!!
面部血管瘤
血管瘤图片
http://www.glxgl.com

TOP

返回列表

Powered by Discuz! 7.2   论坛QQ群:逐梦论坛群

© 2001-2021 Comsenz Inc. 鲁公网安备 37120302000001号