AspUpload组件上传大文件

原创 2011年01月07日 16:35:00

 最近闲来无事,给公司做了个内部娱乐网站(ASP的),用的服务器是win2003+IIS6.0,因为是内部的,足够用了。其中一个功能是在线影院,提供在线观看、下载功能,同时也提供上传功能。

     在上传大文件时,稍微费了些时间。

 1.首先要修改 metabase.xml 文件,因为IIS6.0默认上传限制是20K。

         首先停止Internet 信息服务(IIS)的internet服务;

         找到文件c:/windows/system32/inetsrv/metabase.xml,用“记事本”打开该文件,修改AspMaxRequestEntityAllowed。

      好像IIS最大支持的也就1G吧,因为尝试把这个值设的非常大时,这个属性就会在文件中消失。

2.  下载安装Aspupload

3.  为了防止上传超时,在程序里要加上这么一句: Server.ScriptTimeout=9999

4.   下面就是代码了:

        (1) bar.asp

 

<%@EnableSessionState=False%>
<%
Response.Expires = -1
PID = Request("PID")
TimeO = Request("to")
Set UploadProgress = Server.CreateObject("Persits.UploadProgress")
format = "<br><CENTER><b>正在上传,请耐心等待...</b></CENTER><br>%T%t%B3%T 速度:(%S/秒) 估计剩余时间:%R %r%U / %V(%P)%l%t"
bar_content = UploadProgress.FormatProgress(PID, TimeO, "#00007F", format)
If "" = bar_content Then
%>
<HTML>
<HEAD>
<TITLE>Upload Finished</TITLE>
<SCRIPT LANGUAGE="JavaScript">
function CloseMe()
{
window.parent.close();
return true;
}
</SCRIPT>
</HEAD>
<BODY OnLoad="CloseMe()" BGCOLOR="menu">
</BODY>
</HTML>
<%
Else ' Not finished yet
%>
<HTML>
<HEAD>
<meta HTTP-EQUIV="Refresh" CONTENT="1;URL=<%
Response.Write Request.ServerVariables("URL")
Response.Write "?to=" & TimeO & "&PID=" & PID %>">
<TITLE>Uploading Files...</TITLE>
<style type="text/css">
body,td {font-family:Tahoma; font-size: 8pt }
td.spread {font-size: 6pt; line-height:6pt }
td.brick {font-size:6pt; height:12px}
</style>
</HEAD>
<BODY BGCOLOR="menu" topmargin=0>
<% = bar_content %>
</BODY>
</HTML>
<% End If %>


(2)  fileconfig.asp

 

<%
Dim UploadFilePath,UploadLimitSize,NotAllowfileext,BrowerFilePath
UploadFilePath = year(now)&"_"&month(now)&"_"&day(now)&"/"
'文件上传路径

BrowerFilePath = "/"

UploadLimitSize = 1024*50 '50M
'最大上传文件大小,单位为K

NotAllowfileext = "asp|cer|cdx|asa|htw|ida|idq|shtm|shtml|stm|printer|cgi|php|php4|cfm|aspx"
'不可以上传的文件类型

function CanUpload(Fileurl)
Fileurl = lcase("|"& Mid(Fileurl, InstrRev(Fileurl, ".") + 1)& "|")
NotAllowfileextstr = "|"&NotAllowfileext&"|"
if instr(NotAllowfileextstr,Fileurl)>0 then
CanUpload = false
else
CanUpload = true
end if
end function

Function CreateFolder(Filepath)
Dim fso, f
on error resume next
Set fso = CreateObject("Scripting.FileSystemObject")
if not fso.FolderExists(Filepath) then
Set f = fso.CreateFolder(Filepath)
set f = Nothing
end if
set fso = Nothing
End Function
%>


(3) framebar.asp

 

<%@EnableSessionState=False%>
<% Response.Expires = -1 %>
<title>正在上传............</title>
<style type='text/css'>td {font-family:Tahoma; font-size: 8pt }</style>
<BODY BGCOLOR="menu" scroll="NO" frameborder="NO" status="no" style="border:0px;">
<script language="JavaScript">
<!--
function Stopupload()
{
if (typeof(window.opener)!="undefined"){
try{
window.opener.document.execCommand("stop");
}
catch(e){}
}
else if(typeof(window.dialogArguments)!="undefined"){
try{
window.dialogArguments.document.execCommand("stop");
}
catch(e){}
}
window.close();
}
//-->
</script>
<IFRAME src="bar.asp?PID=<%= Request("PID") & "&to=" & Request("to") %>" title="Uploading" noresize scrolling=no
frameborder=0 framespacing=10 width=369 height=115></IFRAME>
<TABLE BORDER="0" WIDTH="100%" cellpadding="2" cellspacing="0">
<TR><TD ALIGN="center"><button onclick="Stopupload()" style="font-size:12px;">取消上传</button>
</TD></TR>
</TABLE>
</BODY>
</HTML>


(4)  uploadfile.asp

 

<!--#include file='fileconfig.asp'-->
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="Keywords" content="51windows.Net">
<meta name="Author" content="haiwa">
<title>Upload -51windows.Net</title>
<style>
<!--
* {font:12px;}
-->
</style>
</head>
<body>
<%
On Error Resume Next
Server.ScriptTimeOut=999999
if request("act")="upload" then
dim folder,savepath
savepath=Server.MapPath(UploadFilePath)
CreateFolder(savepath)
Set Upload=Server.CreateObject("Persits.Upload")
Upload.SetMaxSize UploadLimitSize*1024, True
Upload.OverwriteFiles = false
if Request.QueryString("PID") = "" then
Upload.ProgressID="010D60EB00C5AA4B"
else
Upload.ProgressID=Request.QueryString("PID")
end if
Count=Upload.Save(savepath)
If Err.Number <> 0 Then
Response.Write "<div style=""color:red;font-size:12px;"">出现错误: " & Err.Number & "、" & Err.Description &"<a href=""javascript:history.go(-1)"">重新上传</a></div>"
End If
If Err.Number = 8 Then
Response.Write "<div style=""color:red;font-size:12px;"">你上传的文件超过限制("& UploadLimitSize/1024 &"M)<a href=""javascript:history.go(-1)"">重新上传</a></div>"
response.end
end if
dim inputname
dim size,rs_upfile
For Each File in Upload.Files
if not CanUpload(File.ext) then
File.Delete
response.write "<div style=""color:red;font-size:12px;"">"&file.filename &"("& file.size &") 格式不正确!<a href=""javascript:history.go(-1)"">重新上传</a></div>"
else
dim NewName
NewName = year(now) & "-" & month(now) & "-" & day(now) & "-" & hour(now) & "-" & minute(now) & "-" & second(now) & File.ext
File.Move savepath & "/" & NewName
response.write "<div style=""color:green;font-size:12px;""><!-- "&file.filename &"("& file.size &") --> 上传成功"%><a href="javascript:history.go(-1)">重新上传</a></div><%
end if
next
else
%>
<%
dim SPid,PID,barref
Set UploadProgress = Server.CreateObject("Persits.UploadProgress")
SPid = UploadProgress.CreateProgressID()
PID = "PID=" & SPid
barref = "framebar.asp?to=10&" & PID
%>
<SCRIPT LANGUAGE="JavaScript">
function ShowProgress()
{
strAppVersion = navigator.appVersion;
if (document.MyForm.FILE1.value != "")
{
if (strAppVersion.indexOf('MSIE') != -1 && strAppVersion.substr(strAppVersion.indexOf('MSIE')+5,1) > 4)
{
winstyle = "dialogWidth=375px; dialogHeight:175px; center:yes;status:no";
window.showModelessDialog('<% = barref %>&b=IE',window,winstyle);
}
else
{
window.open('<% = barref %>&b=NN','','width=370,height=165', true);
}
}
return true;
}
function chk()
{
if (MyForm.FILE1.value=="")
{
alert("请从硬盘选择你要上传的文件...");
return false;
}
}
</SCRIPT>
<FORM NAME="MyForm" method="post" ENCTYPE="multipart/form-data" ACTION="?<% = PID %>&act=upload" OnSubmit="return ShowProgress();">
<INPUT NAME="FILE1" TYPE="FILE" SIZE="16"> <input name="Submit" type="submit" value="上 传" onclick="return chk()"></FORM>
<%end if%>
</body>
</html>

  这样,访问uploadfile.asp,就能实现上传了。

组件上传之AspUpload使用方法

其实,大家知道Asp已经是日落西山了,.net正在取代。但是目前还有不少公司的网站是基于Asp的,例如我们公司。这次要做一个基于视频上传播放的项目,类似于优酷吧,只是小规模的,涉及到的东西包括视频的上...
  • wangjinyu501
  • wangjinyu501
  • 2012年07月20日 22:04
  • 2462

AspUpload组件的方法中文说明

UploadManager 属性=============================================CodePage As Long (Read/Write) 可以把表单的文本项...
  • dianfeng21sj
  • dianfeng21sj
  • 2007年09月12日 13:04
  • 2532

ASPUpLoad 文件上传

    简介...
  • server01
  • server01
  • 2007年07月08日 14:35
  • 3362

自己整理出来的ASPJpeg和ASPUpload组件的一些属性和方法

aspUploadSet Upload = Server.CreateObject("Persits.Upload")创建对象方法:save "path"保存到指定路径如果不指定路径则保存在内存中sa...
  • dianfeng21sj
  • dianfeng21sj
  • 2007年09月12日 13:03
  • 2945

关于在UTF-8编码下使用ASPUPLOAD组件时遇到的问题

在UTF-8编码下使用ASPUPLOAD组件时遇到了三个问题.第一,aspupload组件在UTF-8编码的文件中上传文件时保存路径中不能包含中文.第二,在使用aspupload组件处理的表单中包含的...
  • wguifeng
  • wguifeng
  • 2007年10月25日 23:03
  • 467

aspupload 上传组件下载

AspUpload 是一款功能强大的动态服务器上传组件!安装此程序,可以让你通过ASP程序上传各种文档!AspUpload 能够实现以下功能:1.限制上载文件的大小。2.设置用户的权限。3.修改文件属...
  • u013334626
  • u013334626
  • 2014年08月25日 13:44
  • 284

ASP使用ASPupload组件上传多个文件

ASP使用ASPupload组件上传多个文件的示例,ASPupload是一款专门在ASP环境下上传文件的一个组件,支持多文件上传,本教程主要是演示如何使用aspupload上传文件。测试前,请确保你已...
  • SJian123
  • SJian123
  • 2014年07月03日 10:03
  • 2246

WEB大文件上传几个组件了解

WEB大文件上传几个组件了解(转自:http://www.cnblogs.com/yjmyzz/archive/2010/03/19/1689996.html) 1.swfupload 开源项目 也是...
  • flyerwing
  • flyerwing
  • 2009年10月30日 15:24
  • 14824

简易的springMVC上传大文件

jsp: java @RequestMapping(value = "login/upload", method = RequestMethod.POST) public...
  • u014596302
  • u014596302
  • 2016年07月10日 19:04
  • 1223

封装了okhttp的网络框架,支持大文件上传下载,上传进度...

本帖最后由 anjoy紫外线 于 2016-4-20 16:42 编辑   1.用法 对于Eclipse不能运行项目的,提供了apk供直接运行,位于项目根目录 okhttputils_v...
  • qq_23174861
  • qq_23174861
  • 2016年05月23日 10:17
  • 7105
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AspUpload组件上传大文件
举报原因:
原因补充:

(最多只允许输入30个字)