不用WinRar将网络空间上的文件打包下载(adodb.stream)
本文来自:totaobao
此方法,不建议压缩,大文件,
一般的小文件压几个还很好用的
<%@ Language=VBScript %>
<% Option Explicit %>
<!--#include file="asptar.asp"-->
<%
Response.Buffer = True
Response.Clear
Dim Co,Temp,T,x,i,fsoBrowse,theFolder,TheSubFolders,FilePath,s,PH,objTar
Co=0
PH="./UpFile" 文件路径 压缩Upfile下的所有文件
Set objTar = New Tarball
objTar.TarFilename="LvBBS_UpdateFile.rar" 打包的名称
objTar.Path=PH
set fsoBrowse=CreateObject("Scripting.FileSystemObject")
Set theFolder=fsoBrowse.GetFolder(Server.Mappath(PH))
Set theSubFolders=theFolder.SubFolders
For Each T in theFolder.Files
Temp= Temp & T.Name & "|"
Co=Co+1
Next
For Each x In theSubFolders
For Each i In X.Files
Temp= Temp & X.Name&"/"&i.Name&"|"
Co=Co+1
Next
Next
If Co<1 Then
Response.Write "暂时没有可更新的文件下载"
objTar.AddMemoryFile "Sorry.txt","Not File!"
Else
Temp=Left(Temp,Len(Temp)-1)
FilePath=Split(Temp,"|")
For s=0 To Ubound(FilePath)
objTar.AddFile Server.Mappath(PH&"/"&FilePath(s))
Next
If Response.IsClientConnected Then
objTar.WriteTar
Response.Flush
End If
End If
Set ObjTar = Nothing
Set fsoBrowse= Nothing
Set theFolder = Nothing
Set theSubFolders = Nothing
%>
asptar.asp
<%
UNIX Tarball creator
====================
Author: Chris Read
Version: 1.0.1
====================
Homepage: http://users.bigpond.net.au/mrjolly/
This class provides the ability to archive multiple files together into a single
distributable file called a tarball (The TAR actually stands for Tape ARchive).
These are common UNIX files which contain uncompressed data.
So what is this useful for? Well, it allows you to effectively combine multiple
files into a single file for downloading. The TAR files are readable and extractable
by a wide variety of tools, including the very widely distributed WinZip.
This script can include two types of data in each archive, file data read from a disk,
and also things direct from memory, like from a string. The archives support files in
a binary structure, so you can store executable files if you need to, or just store
text.
This class was developed to assist me with a few projects and has grown with every
implementation. Currently I use this class to tarball XML data for archival purposes
which allows me to grab 100s of dynamically created XML files in a single download.
There are a small number of properties and methods, which are outlined in the
accompanying documentation.
Class Tarball
Public TarFilename Resultant tarball filename
Public UserID UNIX user ID
Public UserName UNIX user name
Public GroupID UNIX group ID
Public GroupName UNIX group name
Public Permissions UNIX permissions
Public BlockSize Block byte size for the tarball (default=512)
Public IgnorePaths Ignore any supplied paths for the tarball output
Public BasePath Insert a base path with each file
Public Path
Storage for file information
Private objFiles,TmpFileName
Private objMemoryFiles
File list management subs, very basic stuff
Public Sub AddFile(sFilename)
objFiles.Add sFilename,sFilename
End Sub
Public Sub RemoveFile(sFilename)
objFiles.Remove sFilename
End Sub
Public Sub AddMemoryFile(sFilename,sContents)
objMemoryFiles.Add sFilename,sContents
End Sub
Public Sub RemoveMemoryFile(sFilename)
objMemoryFiles.Remove sFilename
End Sub
Send the tarball to the browser
Public Sub WriteTar()
Dim objStream, objInStream, lTemp, aFiles
Set objStream = Server.CreateObject("ADODB.Stream") The main stream
Set objInStream = Server.CreateObject("ADODB.Stream") The input stream for data
objStream.Type = 2
objStream.Charset = "x-ansi" Good old extended ASCII
objStream.Open
objInStream.Type = 2
objInStream.Charset = "x-ansi"
Go through all files stored on disk first
aFiles = objFiles.Items
For lTemp = 0 to UBound(aFiles)
objInStream.Open
objInStream.LoadFromFile aFiles(lTemp)
&nb
补充:综合编程 , 安全编程 ,
上一个:一个5秒后弹窗代码
下一个:监控一下另外一台电脑是否有人使用