aspupload文件重命名及上传进度条的解决方法附代码

  发现还没有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>