Contoh.asp
< %@LANGUAGE="VBSCRIPT " CODEPAGE="65001"%>
<!--#include file="SundyUpload.asp"-->
<%
'Pengkodean dokumen pada contoh ini adalah UTF-8. Jika ini adalah sistem pengkodean lain, harap ubah pengkodean ke pengkodean yang sesuai, jika tidak, data yang diperoleh dari formulir mungkin kacau.
Redupkan objUpload, pilih
Jalur Dimxml
Redupkan fileFormName,objFile,counter
memilih = permintaan.QueryString("memilih")
Jika opt = "Unggah" Lalu
xmlPath = Server.MapPath(request.QueryString("xmlPath"))'Konversi jalur virtual ke jalur sebenarnya
Setel objUpload=new SundyUpload 'Buat objek unggahan
objUpload.UploadInit xmlPath,"utf-8"
penghitung=1
Response.Write("Bentuk normal:" & objUpload.Form("normalForm") & "<BR><BR>")'Dapatkan data formulir
Untuk Setiap fileFormName Di objUpload.objFile
Setel objFile=objUpload.objFile(fileFormName)
ukuran file = objFile.Ukuran File
strTemp= objFile.Jalur File
Respon.Tulis strTemp
namafile = pertengahan(strTemp,InStrRev(strTemp, "")+1)
Jika Ukuran file > 0 Lalu
Response.Write("Ukuran File:" & Ukuran File & "<BR>")
Response.Write("Nama File:" & objFile.FilePath & "<BR>")
' Response.Write("Deskripsi File:" & objUpload.Form("fileDesc" & counter) & "<BR><BR>")
objFile.SaveAs Server.MapPath(".") & "upload" & Nama file
Response.Tulis "Simpan di: "&Server.MapPath(".") & "upload" & Namafile & "<br><br>"
Akhiri Jika
penghitung = penghitung + 1
Berikutnya
Akhiri Jika
'Unggah file data bilah kemajuan (tentukan jalur virtual untuk file XML)
'Yang terbaik adalah melakukannya secara acak, karena beberapa orang mungkin mengunggah pada waktu yang sama dan memerlukan data kemajuan yang berbeda
'Jalur ini perlu diteruskan ke komponen unggahan saat mengirimkan sehingga data kemajuan dapat diubah selama proses unggahan
'Klien menggunakan Javascript untuk membaca file XML ini dan menampilkan kemajuannya
xmlPath = "unggah/" & Timer & ".xml"
%>
<html>
<kepala>
<meta http-equiv="Jenis Konten" content="teks/html; charset=utf-8" />
<title>Contoh Bilah Kemajuan Pengunggahan Sunday</title>
<skrip bahasa="javascript">
fungsi chkFrm(){
var objFrm = dokumen.frmUpload;
jika (objFrm.file1.value=="" && objFrm.file2.value==""){
alert("Silakan pilih file");
objFrm.file1.fokus();
kembali salah;
}
objFrm.action = "Contoh.asp?opt=Unggah&xmlPath=<%=xmlPath%>";
startProgress('<%=xmlPath%>');//Mulai bilah kemajuan
kembali benar;
}
</skrip>
</kepala>
<tubuh>
<form name="frmUpload" method="post" action="Example.asp" enctype="multipart/form-data" onSubmit="return chkFrm()">
Bentuk normal:<BR><input type="text" name="normalForm" size="40"><BR><BR>
Berkas 1:<BR>
<masukan tipe="file" nama="file1" size="40"></br>
<input type="text" name="fileDesc1" size="30"><BR><BR>
Berkas 2:<BR>
<masukan tipe="file" nama="file2" size="40"></br>
<input type="teks" nama="fileDesc2" size="30"><BR>
Berkas 3:<BR>
<masukan tipe="file" nama="file3" size="40"></br>
Berkas 4:<BR>
<masukan tipe="file" nama="file4" size="40"></br>
Berkas 5:<BR>
<masukan tipe="file" nama="file5" size="40"></br>
<input type="kirim" nama="btnSubmit" value="kirim"/>
</bentuk>
</tubuh>
</html>
SundyUpload.asp
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<%
DimSundyUpload_SourceData
KelasSundyUpload
Redupkan objForm,objFile,Versi,objProgress
Redupkan xmlPath,CharsetEncoding
Formulir Fungsi Publik (strForm)
strForm=lcase(strForm)
Jika TIDAK objForm.exists(strForm) Lalu
Bentuk = ""
Kalau tidak
Formulir=objForm(strForm)
Akhiri Jika
Fungsi Akhir
(strFile)
strFile=lkasus(strFile)
Jika TIDAK objFile.exists(strFile) Lalu
Setel File=FileInfo baru
Kalau tidak
Setel File=objFile(strFile)
Akhiri Jika
Fungsi Akhir
Sub Publik UploadInit (progressXmlPath, rangkaian karakter)
Redupkan RequestData,sStart,Crlf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,theFile
Redupkan iFileSize,sFilePath,sFileType,sFormValue,sFileName
Redupkan iFindStart,iFindEnd
Redupkan iFormStart,iFormEnd,sFormName
Version="Bilah Kemajuan Lebar Unggah Versi 1.0"
Setel objForm=Server.CreateObject("Scripting.Dictionary")
Setel objFile=Server.CreateObject("Scripting.Dictionary")
Jika Request.TotalBytes<1 Kemudian Keluar dari Sub
Setel tStream = Server.CreateObject("adodb.stream")
Setel SundyUpload_SourceData = Server.CreateObject("adodb.stream")
SundyUpload_SourceData.Jenis = 1
SundyUpload_SourceData.Mode =3
SundyUpload_SourceData.Buka
DimTotalBytes
Redupkan PotonganReadSize
Redupkan DataPart, PartSize
Redupkan objekKemajuan
TotalBytes = Permintaan.TotalBytes 'Ukuran total
ChunkReadSize = 64 * 1024' Ukuran potongan 64K
ByteBaca = 0
xmlPath = kemajuanXmlPath
CharsetEncoding = rangkaian karakter
Jika CharsetEncoding = "" Lalu
Pengkodean Charset = "utf-8"
Akhiri Jika
Setel objProgress = Kemajuan Baru
objProgress.ProgressInit(xmlPath)
objProgress.UpdateProgress Totalbyte,0
'Pembacaan blok berulang
Lakukan Sementara BytesRead < TotalBytes
'Bacalah sedikit demi sedikit
Ukuran Bagian = PotonganBacaUkuran
Jika PartSize + BytesRead > TotalBytes Maka PartSize = TotalBytes - BytesRead
DataPart = Permintaan.BinaryRead(PartSize)
BytesBaca = ByteBaca + Ukuran Bagian
SundyUpload_SourceData.Tulis DataPart
objProgress.UpdateProgress Totalbytes,ByteBaca
Lingkaran
'SundyUpload_SourceData.Permintaan Tulis.BinaryRead(Permintaan.TotalBytes)
SundyUpload_SourceData.Posisi=0
RequestData =SundyUpload_SourceData.Baca
iFormMulai=1
iFormEnd = LenB(Data Permintaan)
Crlf = chrB(13) & chrB(10)
sStart = MidB(RequestData,1, InStrB(iFormStart,RequestData,Crlf)-1)
iMulai = LenB(sMulai)
iFormMulai=iFormMulai+iMulai+1
Sementara (iFormStart + 10) < iFormEnd
iInfoEnd = InStrB(iFormStart,RequestData,Crlf & Crlf)+3
tStream.Jenis = 1
tStream.Mode =3
tStream.Buka
SundyUpload_SourceData.Posisi = iFormStart
SundyUpload_SourceData.CopyTo tStream,iInfoEnd-iFormStart
tStream.Posisi = 0
tStream.Jenis = 2
tStream.Charset = Pengkodean Charset
sInfo = tStream.ReadText
tStream.Tutup
'Dapatkan nama item formulir
iFormStart = InStrB(iInfoEnd,RequestData,sStart)
iFindStart = InStr(22,sInfo,"nama=""",1)+6
iFindEnd = InStr(iFindStart,sInfo,"""",1)
sFormName = lcase(Pertengahan (sinfo,iFindStart,iFindEnd-iFindStart))
'Jika itu adalah file
Jika InStr (45,sInfo,"filename=""",1) > 0 Maka
Atur File=FileInfo baru
'Dapatkan nama file
iFindStart = InStr(iFindEnd,sInfo,"namafile=""",1)+10
iFindEnd = InStr(iFindStart,sInfo,"""",1)
sFileName = Pertengahan (sinfo,iFindStart,iFindEnd-iFindStart)
theFile.FileName=getFileName(sFileName)
theFile.FilePath=getFilePath(sFileName)
'Dapatkan jenis file
iFindStart = InStr(iFindEnd,sInfo,"Jenis Konten: ",1)+14
iFindEnd = InStr(iFindStart,sInfo,vbCr)
theFile.FileType = Tengah (sinfo,iFindStart,iFindEnd-iFindStart)
File.FileStart =iInfoEnd
File.Ukuran File = iFormStart -iInfoEnd -3
File.FormName=sFormName
Jika BUKAN objFile.Exists(sFormName) Lalu
objFile.tambahkan sFormName,File
Akhiri Jika
Kalau tidak
'Jika itu adalah item formulir
tStream.Jenis =1
tStream.Mode =3
tStream.Buka
SundyUpload_SourceData.Posisi = iInfoEnd
SundyUpload_SourceData.CopyTo tStream,iFormStart-iInfoEnd-3
tStream.Posisi = 0
tStream.Jenis = 2
tStream.Charset = Pengkodean Charset
sFormValue = tStream.ReadText
tStream.Tutup
Jika objForm.Exists(sFormName) Lalu
objForm(sFormName)=objForm(sFormName)&", "&sFormValue
Kalau tidak
objForm.Tambahkan sFormName,sFormValue
Akhiri Jika
Akhiri Jika
iFormMulai=iFormMulai+iMulai+1
Pergi ke
Data Permintaan=""
Setel tStream = Tidak Ada
Akhiri Sub
Sub Kelas Pribadi_Inisialisasi
Akhiri Sub
Sub Kelas Pribadi_Terminate
Jika Permintaan.TotalBytes>0 Lalu
objForm.HapusSemua
objFile.HapusSemua
Setel objForm=Tidak Ada
Setel objFile=Tidak Ada
SundyUpload_SourceData.Tutup
Setel SundyUpload_SourceData = Tidak Ada
Akhiri Jika
Setel objProgress = Tidak Ada
Setel objFso = Server.CreateObject("Scripting.FileSystemObject")
Jika objFso.FileExists(xmlPath) Lalu
objFso.DeleteFile(xmlPath)
Akhiri Jika
Setel objFso = Tidak Ada
Akhiri Sub
Fungsi Pribadi GetFilePath(FullPath)
Jika FullPath <> "" Lalu
GetFilePath = kiri(FullPath,InStrRev(FullPath, ""))
Kalau tidak
DapatkanJalurFile = ""
Akhiri Jika
Fungsi Akhir
Fungsi Pribadi GetFileName (FullPath)
Jika FullPath <> "" Lalu
GetFileName = pertengahan(FullPath,InStrRev(FullPath, "")+1)
Kalau tidak
DapatkanNamaFile = ""
Akhiri Jika
Fungsi Akhir
FileInfo Kelas
Kelas Akhir
Redupkan FormName,FileName,FilePath,FileSize,FileType,FileStart
Sub Kelas Pribadi_Inisialisasi
Nama File = ""
Jalur File = ""
Ukuran File = 0
FileMulai= 0
Nama Formulir = ""
Tipe File = ""
Akhiri Sub
SaveAs Fungsi Publik (Path Penuh)
Redupkan dr,ErrorChar,i
SaveAs=Benar
'Respon.Tulis jalur lengkap & "........................<br>"
'Nama File = "ss.txt"
Jika trim(fullpath)="" atau FileStart=0 atau fileName="" atau right(fullpath,1)="/" Kemudian Keluar dari Fungsi
'Respon.Tulis "2........................<br>"
Setel dr=CreateObject("Adodb.Stream")
dr.Mode=3
dr.Jenis=1
dr.Buka
SundyUpload_SourceData.position=FileMulai
SundyUpload_SourceData.copy ke dr,FileSize
dr.SaveToFile FullPath,2
dr.Tutup
Setel dr=Tidak Ada
SaveAs=Salah
Fungsi Akhir
Akhiri
Kemajuan Kelas
Kelas
Redupkan objDom,xmlPath
Redupkan Waktu mulai
Sub Kelas Pribadi_Inisialisasi
Sub Akhir
Sub ProgressInit Publik (xmlPathTmp)
Redupkan objRoot,objChild
Redupkan objPI
xmlPath = xmlPathTmp
Setel objDom = Server.CreateObject("Microsoft.XMLDOM")
Setel objRoot = objDom.createElement("kemajuan")
objDom.appendChild objRoot
Setel objChild = objDom.createElement("totalbytes")
objAnak.Teks = "0"
objRoot.appendChild objChild
Setel objChild = objDom.createElement("uploadbytes")
objAnak.Teks = "0"
objRoot.appendChild objChild
Setel objChild = objDom.createElement("uploadpercent")
objChild.Teks = "0%"
objRoot.appendChild objChild
Setel objChild = objDom.createElement("kecepatan unggah")
objAnak.Teks = "0"
objRoot.appendChild objChild
Setel objChild = objDom.createElement("totaltime")
objChild.Teks = "00:00:00"
objRoot.appendChild objChild
Setel objChild = objDom.createElement("waktu kiri")
objChild.Teks = "00:00:00"
objRoot.appendChild objChild
Setel objPI = objDom.createProcessingInstruction("xml","version='1.0' coding='utf-8'")
objDom.masukkanSebelum objPI, objDom.childNodes(0)
objDom.Simpan xmlPath
Setel objPI = Tidak ada
Setel objChild = Tidak Ada
Setel objRoot = Tidak Ada
Setel objDom = Tidak Ada
Akhiri Sub
Sub PembaruanProgres(tBytes,rBytes)
Redupkan eTime, CurrentTime, speed, totalTime, leftTime, persen
Jika rBytes = 0 Maka
Waktu mulai = Pengatur Waktu
Setel objDom = Server.CreateObject("Microsoft.XMLDOM")
objDom.beban(xmlPath)
objDom.selectsinglenode("//totalbytes").text=tBytes
objDom.simpan(xmlPath)
Kalau tidak
kecepatan = 0,0001
Waktu saat ini = Pengatur Waktu
eTime = Waktu saat ini - Waktu mulai
Jika eTime>0 Maka kecepatan = rBytes / eTime
totalWaktu = tByte/kecepatan
leftTime = (tBytes - rBytes) / kecepatan
persen = Bulat(rBytes *100 / tBytes)
'objDom.selectsinglenode("//uploadbytes").text = rBytes
'objDom.selectsinglenode("//uploadspeed").text = kecepatan
'objDom.selectsinglenode("//totaltime").teks = totalWaktu
'objDom.selectsinglenode("//lefttime").text = leftTime
objDom.selectsinglenode("//uploadbytes").text = FormatFileSize(rBytes) & " / " & FormatFileSize(tBytes)
objDom.selectsinglenode("//uploadpercent").teks = persen
objDom.selectsinglenode("//uploadspeed").text = FormatFileSize(kecepatan) & "/detik"
objDom.selectsinglenode("//totaltime").text = SecToTime(totalTime)
objDom.selectsinglenode("//lefttime").text = SecToTime(leftTime)
objDom.simpan(xmlPath)
Akhiri Jika
Akhiri Sub
Fungsi pribadi SecToTime (dtk)
Redupkan j:h = "0"
Redupkan m:m = "0"
Redupkan s:s = "0"
h = putaran (dtk / 3600)
m = bulat( (mod detik 3600) / 60)
s = bulat (mod detik 60)
Jika LEN(h)=1 Maka h = "0" & h
Jika LEN(m)=1 Maka m = "0" & m
Jika LEN(s)=1 Maka s = "0" & s
SecToTime = (jam & ":" & m & ":" & s)
Fungsi Akhir
Fungsi pribadi FormatFileSize(fsize)
Redupkan radio,k,m,g,unitTMP
k = 1024
m = 1024*1024
g = 1024*1024*1024
radio=1
Jika Fix(fsize / g) > 0,0 Lalu
satuanTMP = "GB"
radio=g
ElseIf Fix(fsize / m) > 0 Lalu
satuanTMP = "MB"
radio=m
ElseIf Fix(fsize / k) > 0 Lalu
satuanTMP = "KB"
radio=k
Kalau tidak
satuanTMP = "B"
radio=1
Akhiri Jika
Jika radio = 1 Maka
FormatFileSize = ukuran & " " & unitTMP
Kalau tidak
FormatFileSize = FormatNumber(fsize/radio,3) & unitTMP
Akhiri Jika
Fungsi Akhir
Sub Kelas Pribadi_Terminate
Setel objDom = Tidak Ada
Akhiri Sub
Kelas Akhir
'http://www.knowsky.com/
%>
<skrip bahasa="javascript">
//Mulai bilah kemajuan
fungsi startProgress(xmlPath){
tampilanKemajuan();
setProgressDivPos();
setTimeout("DisplayProgressBar('" + xmlPath + "')",500);
}
fungsi DisplayProgressBar(xmlPath){
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
xmlDoc.async = salah;
xmlDoc.beban(xmlPath);
jika (xmlDoc.parseError.errorCode!=0){
var error = xmlDoc.parseError;
peringatan(kesalahan.alasan)
setTimeout("DisplayProgressBar('" + xmlPath + "')",1000);
kembali;
}
var root = xmlDoc.documentElement; //simpul akar
var totalbytes = root.childNodes(0).teks;
var uploadbytes = root.childNodes(1).teks;
var persen = root.childNodes(2).teks;
ProgressPercent.innerHTML = persen + "%";
ProgressBar.style.width = persen + "%";
uploadSize.innerHTML = uploadbyte;
uploadSpeed.innerHTML = root.childNodes(3).teks;
totalTime.innerHTML = root.childNodes(4).teks;
leftTime.innerHTML = root.childNodes(5).teks;
jika (persen<100){
setTimeout("DisplayProgressBar('" + xmlPath + "')",1000);
}
}
fungsi tampilanKemajuan(){
var objProgress = document.getElementById("Kemajuan");
objProgress.style.display = "";
}
fungsi closeProgress(){
var objProgress = document.getElementById("Kemajuan");
objProgress.style.display = "tidak ada";
}
fungsi setProgressDivPos(){
var objProgress = document.getElementById("Kemajuan");
objProgress.style.top = document.body.scrollTop+(document.body.clientHeight-document.getElementById("Progress").offsetHeight)/2
objProgress.style.left = document.body.scrollLeft+(document.body.clientWidth-document.getElementById("Progress").offsetWidth)/2;
}
</skrip>
<gaya tipe="teks/css">
.kemajuan {
posisi: mutlak;
bantalan: 4 piksel;
atas: 50;
kiri: 400;
keluarga font: Verdana, Helvetica, Arial, sans-serif;
ukuran font: 12px;
lebar: 250 piksel;
tinggi:100 piksel;
latar belakang: #FFFFD1;
warna: #3D2C05;
batas: 1 piksel padat #715208;
/* milik Mozilla */
-moz-batas-radius: 5 piksel;
/*-moz-opasitas: 0,95; */
}
.tabel kemajuan,.kemajuan td{
ukuran font:9pt;
}
.Batang{
lebar:100%;
tinggi:15 piksel;
warna latar belakang:#CCCCCC;
batas: 1 piksel sisipan #666666;
margin-bawah:4px;
}
.Persen Kemajuan{
ukuran font: 9pt;
warna: #000000;
tinggi: 15 piksel;
posisi: mutlak;
indeks-z: 20;
lebar: 100%;
perataan teks: tengah;
}
.Bilah Kemajuan{
warna latar belakang:#91D65C;
lebar:1 piksel;
tinggi:15 piksel;
}
</gaya>
<div id="Kemajuan" style="display:tidak ada;" kelas="kemajuan">
<div kelas="bar">
<div id="ProgressPercent" class="ProgressPercent">0%</div>
<div id="ProgressBar" class="ProgressBar"></div>
</div>
<tabel border="0" cellpacing="0" cellpadding="2">
<tr>
<td>Diunggah</td>
<td>:</td>
<td id="uploadSize"></td>
</tr>
<tr>
<td>Kecepatan unggah</td>
<td>:</td>
<td id="uploadSpeed"> </td>
</tr>
<tr>
<td>Total waktu yang diperlukan</td>
<td>:</td>
<td id="totalTime"> </td>
</tr>
<tr>
<td>Sisa waktu</td>
<td>:</td>
<td id="waktu kiri"> </td>
</tr>
</tabel>
</div>
http://blog.csdn.net/delinsql/archive/2006/12/29/1467430.aspx