源码网,源码论坛,源码之家,商业源码,游戏源码下载,discuz插件,棋牌源码下载,精品源码论坛

 找回密码
 立即注册
查看: 504|回复: 21

[ASP编程] aspupload文件重命名及上传进度条的解决方法附代码第1/2页

[复制链接]

7万

主题

861

回帖

32万

积分

论坛元老

Rank: 8Rank: 8

积分
329525
发表于 2007-8-10 18:59:01 | 显示全部楼层 |阅读模式
发现还没有aspupload这个组件的,这两样功能的解决方案,现把我的改进方案写在这里!谢谢 
关于aspupload上传组件,文件重命名,进度条的问题解决方案! 
共用到4个文件,分别是1.asp,2.asp,bar.asp,framebar.asp 
运行第一个文件:1.asp,执行上传操作! 
复制代码 代码如下:
<%
'''进度条
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.upfile.filename.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 isPic(){
    var temp;
    var ExtList = ".jpg.gif.bmp.png.swf";//客户端,检测文件后缀名,省得上传完成后,才报文件类型错误!
    var filename = upfile.filename.value;
    var the_ext = filename.substr(filename.lastIndexOf(".")+1).toLowerCase();
    if (ExtList.indexOf(the_ext)==-1){
        alert("不是图片,请选择图片文件!");
        return false;
    }
    return true;
}
//-->
</SCRIPT>
  <html>
  <head></head>
  <body>
  <form method="post"enctype="multipart/form-data"action="2.asp?<% = PID %>"name="upfile"OnSubmit="return ShowProgress();"> 
  
  选择要上传的文件:<br>
  <input type=file name="filename"><br>
  <input type=submit value="上传" onclick="return isPic()">
  </form> 

  </body>
  </html>

2.asp
复制代码 代码如下:
<%

Set Upload = Server.CreateObject("Persits.Upload") 

' Prevent overwriting 
Upload.OverwriteFiles = False 

' We use memory uploads, 文件大小限制 ,单位:b
Upload.SetMaxSize 1*1024*1024*1024, true 

if Request.QueryString("PID") = "" then
                Upload.ProgressID="010D60EB00C5AA4B"
        else
                Upload.ProgressID=Request.QueryString("PID")
        end if

On Error Resume Next

' Save to memory 保存到内存
Upload.Save

If Err.Number = 8 Then
   Response.Write "文件大于1G"
End If 


'为使文件不重名,用系统时间+随机数,作为文件名
Dim ranNum
        randomize
        ranNum=int(999*rnd)
        CreateName=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum
NewName = CreateName
'保存文件路径
articlepath = Server.MapPath("upload1") 


For Each File in Upload.Files 
        FileExt=Lcase(replace(File.ext,".",""))
                '服务器端判断文件类型,动网论坛的判断方式
                If CheckFileExt(FileExt)=false then
                        Response.write "文件格式不正确,或不能为空 [ <a href=# onclick=history.go(-1)>重新上传</a> ]"

                        else
   File.SaveAs articlepath & "/" & NewName & File.ext 
   Response.Write "New name: " & File.FileName & "<BR>" 
End If

Next 

%> 
<%
'服务器端判断文件类型,动网论坛的判断方式
Private Function CheckFileExt(FileExt)

        If FileExt="" or IsEmpty(FileExt) Then
                CheckFileExt=false
                Exit Function
        End If
        If Lcase(FileExt)="asp" or Lcase(FileExt)="asa" or Lcase(FileExt)="aspx" then
                CheckFileExt=false
                Exit Function
        End If
        If Lcase(FileExt)="gif" or Lcase(FileExt)="jpg" or Lcase(FileExt)="png" or Lcase(FileExt)="swf" or Lcase(FileExt)="bmp" then
                CheckFileExt=true
                Exit Function
        Else
                CheckFileExt=false
        End If
End Function
%>




bar.asp
复制代码 代码如下:
<%
        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 %>


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>

发现还没有aspupload这个组件的,这两样功能的解决方案,现把我的改进方案写在这里!谢谢 
关于aspupload上传组件,文件重命名,进度条的问题解决方案! 
共用到4个文件,分别是1.asp,2.asp,bar.asp,framebar.asp 
运行第一个文件:1.asp,执行上传操作! 
复制代码 代码如下:
<%
'''进度条
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.upfile.filename.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 isPic(){
    var temp;
    var ExtList = ".jpg.gif.bmp.png.swf";//客户端,检测文件后缀名,省得上传完成后,才报文件类型错误!
    var filename = upfile.filename.value;
    var the_ext = filename.substr(filename.lastIndexOf(".")+1).toLowerCase();
    if (ExtList.indexOf(the_ext)==-1){
        alert("不是图片,请选择图片文件!");
        return false;
    }
    return true;
}
//-->
</SCRIPT>
  <html>
  <head></head>
  <body>
  <form method="post"enctype="multipart/form-data"action="2.asp?<% = PID %>"name="upfile"OnSubmit="return ShowProgress();"> 
  
  选择要上传的文件:<br>
  <input type=file name="filename"><br>
  <input type=submit value="上传" onclick="return isPic()">
  </form> 

  </body>
  </html>

2.asp
复制代码 代码如下:
<%

Set Upload = Server.CreateObject("Persits.Upload") 

' Prevent overwriting 
Upload.OverwriteFiles = False 

' We use memory uploads, 文件大小限制 ,单位:b
Upload.SetMaxSize 1*1024*1024*1024, true 

if Request.QueryString("PID") = "" then
                Upload.ProgressID="010D60EB00C5AA4B"
        else
                Upload.ProgressID=Request.QueryString("PID")
        end if

On Error Resume Next

' Save to memory 保存到内存
Upload.Save

If Err.Number = 8 Then
   Response.Write "文件大于1G"
End If 


'为使文件不重名,用系统时间+随机数,作为文件名
Dim ranNum
        randomize
        ranNum=int(999*rnd)
        CreateName=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum
NewName = CreateName
'保存文件路径
articlepath = Server.MapPath("upload1") 


For Each File in Upload.Files 
        FileExt=Lcase(replace(File.ext,".",""))
                '服务器端判断文件类型,动网论坛的判断方式
                If CheckFileExt(FileExt)=false then
                        Response.write "文件格式不正确,或不能为空 [ <a href=# onclick=history.go(-1)>重新上传</a> ]"

                        else
   File.SaveAs articlepath & "/" & NewName & File.ext 
   Response.Write "New name: " & File.FileName & "<BR>" 
End If

Next 

%> 
<%
'服务器端判断文件类型,动网论坛的判断方式
Private Function CheckFileExt(FileExt)

        If FileExt="" or IsEmpty(FileExt) Then
                CheckFileExt=false
                Exit Function
        End If
        If Lcase(FileExt)="asp" or Lcase(FileExt)="asa" or Lcase(FileExt)="aspx" then
                CheckFileExt=false
                Exit Function
        End If
        If Lcase(FileExt)="gif" or Lcase(FileExt)="jpg" or Lcase(FileExt)="png" or Lcase(FileExt)="swf" or Lcase(FileExt)="bmp" then
                CheckFileExt=true
                Exit Function
        Else
                CheckFileExt=false
        End If
End Function
%>




bar.asp
复制代码 代码如下:
<%
        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 %>


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>

回复

使用道具 举报

1

主题

2万

回帖

176

积分

注册会员

Rank: 2

积分
176
发表于 2022-9-3 22:45:02 | 显示全部楼层
很好,谢谢分享
回复 支持 反对

使用道具 举报

1

主题

2万

回帖

362

积分

中级会员

Rank: 3Rank: 3

积分
362
发表于 2022-9-21 08:35:20 | 显示全部楼层
你们谁看了弄洒了可能
回复 支持 反对

使用道具 举报

1

主题

2万

回帖

155

积分

注册会员

Rank: 2

积分
155
发表于 2022-9-23 00:52:52 | 显示全部楼层
谢谢下载来看看
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

61

积分

注册会员

Rank: 2

积分
61
发表于 2022-11-11 03:17:24 | 显示全部楼层
iiguuubhuiuihu
回复 支持 反对

使用道具 举报

0

主题

1万

回帖

68

积分

注册会员

Rank: 2

积分
68
发表于 2023-2-2 14:04:38 | 显示全部楼层
天天源码社区www.tiantianym.com
回复 支持 反对

使用道具 举报

3

主题

2万

回帖

172

积分

注册会员

Rank: 2

积分
172
发表于 2023-2-5 19:40:12 | 显示全部楼层
老大你好你好好你好
回复 支持 反对

使用道具 举报

3

主题

2万

回帖

163

积分

注册会员

Rank: 2

积分
163
发表于 2023-2-23 11:14:22 | 显示全部楼层
dfdsafdsfdsfdsf
TS人妖演出表演服务q3268336102电话13168842816
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2023-10-16 14:25:24 | 显示全部楼层
我要金豆金豆金豆
回复 支持 反对

使用道具 举报

2

主题

1万

回帖

146

积分

注册会员

Rank: 2

积分
146
发表于 2023-10-16 19:39:47 | 显示全部楼层
啊啊啊啊啊啊啊啊啊啊啊啊啊啊
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

手机版|小黑屋|网站地图|源码论坛 ( 海外版 )

GMT+8, 2024-11-24 20:20 , Processed in 0.079580 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表