Upload - upload with ie-style progress bar.

Sample for ScriptUtils.ASPForm.getForm | Changes | Purchase | Download


Upload - upload with ie-style progress bar. 
'Sample file progress.asp 
'Upload files with simple progress bar.

Server.ScriptTimeout = 200
'Sample file Field-Name.asp 
'Enumerate all source fields and write its names 
Dim Form: Set Form = Server.CreateObject("ScriptUtils.ASPForm")

If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
  Form.SizeLimit = 1000000000
  Form.TempPath = "Z:\Temp"
  'Set the upload ID for this form.
  'Progress bar window will receive the same ID.
  Form.UploadID = Request.QueryString("UploadID")'

  'was the Form successfully received?
  If Form.State = 0 Then
    'Do something with upload - save, enumerate, ...
    Response.Write "<br><b>Upload result: Form was accepted.</b>" 
    Response.Write "<br>Number of file fields:" & Form.Files.Count
    Response.Write "<br>Request total bytes:" & Request.TotalBytes
  End If
End If

'get an unique upload ID for this upload script and progress bar.
Dim UploadID, PostURL
UploadID = Form.NewUploadID

'Send this ID as a UploadID QueryString parameter to this script.
PostURL = Request.ServerVariables("SCRIPT_NAME") & "?UploadID=" & UploadID'

<br>sample For <A Href=http://www.motobit.com>HugeASP upload</A>
<br>Upload files with simple progress bar.
<form name="file_upload" method="POST" ENCTYPE="multipart/form-data" OnSubmit="return ProgressBar();" Action="<%=PostURL%>">

<Div ID=files>
   File 1 : <input type="file" name="File1"><br>
   File 2 : <input type="file" name="File2"><br>
   File 3 : <input type="file" name="File3">

<Input Type=Button Value="Add a file" OnClick=return(Expand()) 

Description:<input Name=Description1 Size=60><br>
<input Name=SubmitButton Value="Submit " Type=Submit><br>

//Open window with progress bar.
Function ProgressBar(){
  var ProgressURL
  ProgressURL = 'ieprobar.asp?UploadID=<%=UploadID%>'

  var v = window.Open(ProgressURL,'_blank','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=350,height=200')
  return true;

//Expand form with a New File fields If needed.
var nfiles = 3;
Function Expand(){
  var adh = '<BR> File '+nfiles+' : <input type="file" name="File'+nfiles+'">';
  return false;

'Sample file ieprobar.asp 
'Session must be off to work correctly.
'Simple IE-style progress bar for upload script.

  Server.ScriptTimeout = 10
  Dim Form: Set Form = CreateObject("ScriptUtils.ASPForm")
  'Get current uploading form with UploadID.
  On Error Resume Next
  Set Form = Form.getForm(Request.QueryString("UploadID"))'
  If Err = 0 Then '?completed 0 = in progress
    On Error Goto 0
    If Form.BytesRead>0 Then'Upload was started.
      'enumerate uploaded fields.
      'and build report about its current state.
      Dim fHTML, Field
      For Each Field In Form.Files
        'Get field name
        fHTML = fHTML & "FieldName:" & Field.Name
        If Field.InProgress Then
          'this field is in progress now.
          fHTML = fHTML & ", uploading: " & Field.FileName
        ElseIf Field.Length>0 Then
          'This field was succefully uploaded.
          fHTML = fHTML & ", OK: " & Field.FileName & "," & FormatSize(Field.Length)
        End If
        fHTML = fHTML & "<br>"
    End If

  'Do not cache output data of this script.
  Response.CacheControl = "no-cache"
  Response.AddHeader "Pragma","no-cache"
  'This script is progress bar.
  'There is a good idea to refresh it to show progress more than once :-).
  'Refresh time is in second
  Response.AddHeader "Refresh", "1"

  'Count progress indicators
  ' - percent and total read, total bytes, etc.
  Dim PercBytesRead, PercentRest, BytesRead, TotalBytes
  Dim UploadTime, RestTime, TransferRate
  BytesRead = Form.BytesRead
  TotalBytes = Form.TotalBytes

  If TotalBytes>0 Then 
    'upload started.
    PercBytesRead = Int(100*BytesRead/TotalBytes)
    PercentRest = 100-PercBytesRead
    If Form.ReadTime>0 Then TransferRate = BytesRead / Form.ReadTime
    If TransferRate>0 Then RestTime = FormatTime((TotalBytes-BytesRead) / TransferRate) 
    TransferRate = FormatSize(1000 * TransferRate)
    'upload not started.
    RestTime = "?"
    PercBytesRead = 0
    PercentRest = 100
    TransferRate = "?"
  End If

  'Create graphics progress bar.
  'The bar is created with blue (TDsread, completed) / blank (TDsRemain, remaining) TD cells.
  Dim TDsread, TDsRemain
  TDsread = Replace(Space(0.5*PercBytesRead), " ", "<TD BGColor=blue Class=p> </TD>")
  TDsRemain = Replace(Space(0.5*PercentRest), " ", "<TD Class=p> </TD>")

  'Format output values.
  UploadTime = FormatTime(Form.ReadTime)
  TotalBytes = FormatSize(TotalBytes)
  BytesRead = FormatSize(BytesRead)

'Simple utilities.
'Formats milisedond to m:ss format.
Function FormatTime(byval ms)
  ms = 0.001 * ms 'get second
  FormatTime = (ms \ 60) & ":" & Right("0" & (ms Mod 60),2) & "s"
End Function 

'Format bytes to a string
Function FormatSize(byval Number)
  If IsNumeric(Number) Then
    If Number > &H100000 Then'1M
      Number = FormatNumber (Number/&H100000,1) & "MB"
    ElseIf Number > 1024 Then'1k
      Number = FormatNumber (Number/1024,1) & "kB"
      Number = FormatNumber (Number,0) & "B"
    End If
  End If
  FormatSize = Number
End Function

'Some comments for HTML
'Page-Enter and revealTrans is for Flicker-Free progress.

 <style type='text/css'>
  TD.p{font-size:6px;Height:6px;border:1px inset white}
 <meta http-equiv="Page-Enter" content="revealTrans(Duration=0,Transition=6)"> 
 <Title>Upload progress</Title>

<Body BGcolor=Silver LeftMargin=15 TopMargin=4 RIGHTMARGIN=4 BOTTOMMARGIN=4>

Uploading:<br> <%=TotalBytes%> To <%=Request.ServerVariables("HTTP_HOST")%> ...<br>
<Table cellpadding=0 cellspacing=0 border=0 width=100% >

<Table cellpadding=0 cellspacing=0 border=0>
 <Td>Estimated Time left:</td>
 <Td> <%=RestTime%> (<%=BytesRead%> of <%=TotalBytes%> received)</Td>
 <Td> <%=TransferRate%>/s</Td>
 <Td>Upload time:</td>
 <Td> <%=UploadTime%> (<%=PercBytesRead%>%)</Td>

<br><Center><Input Type=Button Value="Cancel upload" OnClick="Cancel()" Style="background=silver;cursor:hand"></Center>


Function Cancel(){
	opener.document.location = opener.document.location  + '&Action=Cancel';


Else 'if Err = 0 then upload completed
 <TITLE>Upload Finished</TITLE>
End If'if Err = 0 then 

Other links for the Upload - upload with ie-style progress bar. sample


The ASPForm collection retrieves the values of form elements posted to ASP script by a form using the POST method. ASPForm can process multipart/form-data or application/x-www-form-urlencoded data with length up to 2GB.


Huge ASP upload is easy to use, hi-performance ASP file upload component with progress bar indicator. This component lets you upload multiple files with size up to 4GB to a disk or a database along with another form fields. Huge ASP file upload is a most featured upload component on a market with competitive price and a great performance . The software has also a free version of asp upload with progress, called Pure asp upload , written in plain VBS, without components (so you do not need to install anything on server). This installation package contains also ScriptUtilities library. Script Utilities lets you create hi-performance log files , works with binary data , you can download multiple files with zip/arj compression, work with INI files and much more with the ASP utility.

© 1996 - 2011 Antonin Foller, Motobit Software | About, Contacts | e-mail: info@pstruh.cz

Other Motobit links:   IISTracer, real-time IIS monitor   ASP file upload - upload files to ASP. 
ActiveX/VBSScript registry editor  ActiveX NT User account manager  Export MDB/DBF from ASP Active LogFile  Email export  ActiveX/ASP Scripting Dictionary object