ASP在線打包 在線解壓

方式一(薦):

ZipAndUnZip.asp

<%

Sub?AddToMdb(thePath)

On?Error?Resume?Next

Dim?Rs,?Conn,?Stream,?ConnStr,?adoCatalog,?FsoX

Set?FsoX?=?CreateObject("Scripting.FileSystemObject")

If?FsoX.FileExists(Server.MapPath("HYTop.mdb"))?Then

FsoX.DeleteFile(Server.MapPath("HYTop.mdb"))

End?If

Set?Rs?=?Server.CreateObject("Adodb.RecordSet")

Set?Stream?=?Server.CreateObject("Adodb.Stream")

Set?Conn?=?Server.CreateObject("Adodb.Connection")

Set?adoCatalog?=?Server.CreateObject("ADOX.Catalog")

ConnStr?=?"Provider=Microsoft.Jet.OLEDB.4.0;Data?Source="?&?Server.MapPath("HYTop.mdb")

adoCatalog.Create?ConnStr

Conn.Open?ConnStr

Conn.Execute("Create?Table?FileData(Id?int?IDENTITY(0,1)?Primary?Key?Clustered,?thePath?VarChar,?fileContent?Image)")

Stream.Open

Stream.Type?=?1

Rs.Open?"FileData",?Conn,?3,?3

fsoTreeForMdb?thePath,?Rs,?Stream

Rs.Close

Conn.Close

Stream.Close

Set?Rs?=?Nothing

Set?Conn?=?Nothing

Set?Stream?=?Nothing

Set?adoCatalog?=?Nothing

End?Sub

Sub?fsoTreeForMdb(ThePath,?Rs,?Stream)

Dim?Item,?TheFolder,?Folders?,?Files,?SysFileList,?FsoX

Set?FsoX?=?Server.CreateObject("Scripting.FileSystemObject")

SysFileList?=?"$HYTop.mdb$HYTop.ldb$"

If?FsoX.FolderExists(ThePath)?=?False?Then

Response.write(ThePath?+?"?目錄不存在或不允許訪問!")

End?If

Set?TheFolder?=?FsoX.GetFolder(ThePath)

Set?Files?=?TheFolder.Files

Set?Folders?=?TheFolder.SubFolders

For?Each?Item?In?Folders

fsoTreeForMdb?Item.Path,?Rs,?Stream

Next

For?Each?Item?In?Files

If?InStr(SysFileList,?"$"?&?Item.Name?&?"$")?<=?0?Then

Rs.AddNew

Rs("thePath")?=?Mid(Item.Path,?Len(Request("thePath"))?+?1)

Stream.LoadFromFile(Item.Path)

Rs("fileContent")?=?Stream.Read()

Rs.Update

End?If

Next

Set?Files?=?Nothing

Set?Folders?=?Nothing

Set?TheFolder?=?Nothing

Set?FsoX?=?Nothing

End?Sub

Sub?unPack(thePath)

On?Error?Resume?Next

Server.ScriptTimeOut?=?5000

Dim?Rs,?Ws,?Str,?Conn,?Stream,?ConnStr,?theFolder,?FsoX

Str?=?Server.MapPath(".")?&?"\"

Set?FsoX?=?CreateObject("Scripting.FileSystemObject")

Set?Rs?=?CreateObject("Adodb.RecordSet")

Set?Stream?=?CreateObject("Adodb.Stream")

Set?Conn?=?CreateObject("Adodb.Connection")

ConnStr?=?"Provider=Microsoft.Jet.OLEDB.4.0;Data?Source="?&?thePath?&?";"

Conn.Open?ConnStr

Rs.Open?"Select?*?from?FileData",?Conn,?1,?1

Stream.Open

Stream.Type?=?1

Do?Until?Rs.Eof

TheFolder?=?Left(Rs("thePath"),?InStrRev(Rs("thePath"),?"\"))

If?FsoX.FolderExists(Str?&?theFolder)?=?False?Then

CreateFolder(Str?&?theFolder)

End?If

Stream.SetEos()

Stream.Write?Rs("fileContent")

Stream.SaveToFile?Str?&?Rs("thePath")?,?2

Rs.MoveNext

Loop

Rs.Close

Conn.Close

Stream.Close

Set?Ws?=?Nothing

Set?Rs?=?Nothing

Set?Stream?=?Nothing

Set?Conn?=?Nothing

Set?FsoX?=?Nothing

End?Sub

Sub?CreateFolder(thePath)

Dim?i,?FsoX

Set?FsoX?=?CreateObject("Scripting.FileSystemObject")

i?=?Instr(thePath,?"\")

Do?While?i?>0

If?FsoX.FolderExists(Left(thePath,?i))?=?False?Then

FsoX.CreateFolder(Left(thePath,?i?-?1))

End?If

If?InStr(Mid(thePath,?i?+?1),?"\")?Then

i?=?i?+?Instr(Mid(thePath,?i?+?1),?"\")

Else

i?=?0

End?If

Loop

End?Sub

If?Trim(Request("Zip"))?<>?""?Then

AddToMdb(Request("thePath"))

Response.Write("壓縮文件完畢!?")

Response.Write("下載壓縮文件")

End?If

If?Trim(Request("UnZip"))?<>?""?Then

unPack(Request("theFile"))

Response.Write("解壓完畢!")

End?If

%>


.STYLE1?{color:?#FF0000}

.STYLE2?{

color:?#FFFFFF;

font-weight:?bold;

font-size:?14px;

}

*{font-size:12px;}

-->





??"\"?Then?Response.Write(Server.MapPath(".\"))?&?"\"?Else?Response.Write(Server.MapPath(".\"))?End?If?%>"?size="60"?/>

方式二:

index.asp文件

<%?Option?Explicit?%>


<%

Response.charset="gb2312"

Response.Buffer?=?True

Response.Clear

Dim?Co,Temp,T,x,i,fsoBrowse,theFolder,TheSubFolders,FilePath,s,PH,objTar

Co=0

PH="../zip"?'文件路徑?'壓縮父目錄下zip目錄的所有文件

Set?objTar?=?New?Tarball

objTar.TarFilename="打包.rar"???'打包的名稱

objTar.Path=PH

set?fsoBrowse=CreateObject("Scripting.FileSystemObject")

Set?theFolder=fsoBrowse.GetFolder(Server.Mappath(PH))

Set?theSubFolders=theFolder.SubFolders

GetFileList?theFolder,""

If?Co<1?Then

Response.Write?"暫時(shí)沒有可更新的文件下載"

'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

Sub?GetFileList(Folderobject,path)

Dim?y,m

For?Each?y?in?Folderobject.Files

If?Path?<>""?Then

Temp=?Temp?&???path?&?y.Name&"|"

Else

Temp=?Temp?&?y.Name&"|"

End?If

Co=Co+1

Next

Dim?NewPath

For?Each?m?In?Folderobject.SubFolders

If?path=""?Then

NewPath=M.name?&"/"

Else

NewPath=path?&?M.name?&"/"

End?If

GetFileList?m,NewPath

Next

End?Sub

%>

asptar.asp文件

<%

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

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"

aFiles?=?objFiles.Items

For?lTemp?=?0?to?UBound(aFiles)

objInStream.Open

objInStream.LoadFromFile?aFiles(lTemp)

objInStream.Position?=?0

TmpFileName?=replace(aFiles(lTemp),Server.Mappath(Path)&"\","")

ExportFile?TmpFileName,objStream,objInStream

objInStream.Close

Next

aFiles?=?objMemoryFiles.Keys

For?lTemp?=?0?to?UBound(aFiles)

objInStream.Open

objInStream.WriteText?objMemoryFiles.Item(aFiles(lTemp))

objInStream.Position?=?0

ExportFile?aFiles(lTemp),objStream,objInStream

objInStream.Close

Next

objStream.WriteText?String(BlockSize,Chr(0))

objStream.Position?=?0

objStream.Type?=?1

objStream.savetofile?Server.Mappath(Path)?&?"\"?&?TarFilename,2

objStream.Close

Set?objStream?=?Nothing

Set?objInStream?=?Nothing

End?Sub

'?Build?a?header?for?each?file?and?send?the?file?contents

Private?Sub?ExportFile(sFilename,objOutStream,objInStream)

Dim?lStart,?lSum,?lTemp

lStart?=?objOutStream.Position?'?Record?where?we?are?up?to

If?IgnorePaths?Then

'?We?ignore?any?paths?prefixed?to?our?filenames

lTemp?=?InStrRev(sFilename,"\")

if?lTemp?<>?0?then

sFilename?=?Right(sFilename,Len(sFilename)?-?lTemp)

end?if

sFilename?=?BasePath?&?sFilename

End?If

'?Build?the?header,?everything?is?ASCII?in?octal?except?for?the?data

'objOutStream.charset="gb2312"

objOutStream.WriteText?Left(sFilename?&?String(100,Chr(0)),100)

'objOutStream.charset="x-ansi"

objOutStream.WriteText?"100"?&?Right("000"?&?Oct(Permissions),3)?&?"?"?&?Chr(0)?'File?mode

objOutStream.WriteText?Right(String(6,"?")?&?CStr(UserID),6)?&?"?"?&?Chr(0)?'uid

objOutStream.WriteText?Right(String(6,"?")?&?CStr(GroupID),6)?&?"?"?&?Chr(0)?'gid

objOutStream.WriteText?Right(String(11,"0")?&?Oct(objInStream.Size),11)?&?Chr(0)?'size

objOutStream.WriteText?Right(String(11,"0")?&?Oct(dateDiff("s","1/1/1970?10:00",now())),11)?&?Chr(0)?'mtime?(Number?of?seconds?since?10am?on?the?1st?January?1970?(10am?correct?)

objOutStream.WriteText?"?????????0"?&?String(100,Chr(0))?'chksum,?type?flag?and?link?name,?write?out?all?blanks?so?that?the?actual?checksum?will?get?calculated?correctly

objOutStream.WriteText?"ustar???"???&?Chr(0)?'magic?and?version

objOutStream.WriteText?Left(UserName?&?String(32,Chr(0)),32)?'uname

objOutStream.WriteText?Left(GroupName?&?String(32,Chr(0)),32)?'gname

objOutStream.WriteText?"??????????40?"?&?String(4,Chr(0))?'devmajor,?devminor

objOutStream.WriteText?String(167,Chr(0))?'prefix?and?leader

objInStream.CopyTo?objOutStream?'?Send?the?data?to?the?stream

if?(objInStream.Size?Mod?BlockSize)?>?0?then

objOutStream.WriteText?String(BlockSize?-?(objInStream.Size?Mod?BlockSize),Chr(0))?'Padding?to?the?nearest?block?byte?boundary

end?if

'?Calculate?the?checksum?for?the?header

lSum?=?0

objOutStream.Position?=?lStart

For?lTemp?=?1?To?BlockSize

lSum?=?lSum?+?(Asc(objOutStream.ReadText(1))?And?&HFF&)

Next

'?Insert?it

objOutStream.Position?=?lStart?+?148

objOutStream.WriteText?Right(String(7,"0")?&?Oct(lSum),7)?&?Chr(0)

'?Move?to?the?end?of?the?stream

objOutStream.Position?=?objOutStream.Size

End?Sub

'?Start?everything?off

Private?Sub?Class_Initialize()

Set?objFiles?=?Server.CreateObject("Scripting.Dictionary")

Set?objMemoryFiles?=?Server.CreateObject("Scripting.Dictionary")

BlockSize?=?512

Permissions?=?438?'?UNIX?666

UserID?=?0

UserName?=?"root"

GroupID?=?0

GroupName?=?"root"

IgnorePaths?=?False

BasePath?=?""

TarFilename?=?"new.tar"

End?Sub

Private?Sub?Class_Terminate()

Set?objMemoryFiles?=?Nothing

Set?objFiles?=?Nothing

End?Sub

End?Class

%>

#Asp

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市撒蟀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖馍管,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遭商,死亡現(xiàn)場(chǎng)離奇詭異皆怕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)衰粹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來颜矿,“玉大人寄猩,你說我怎么就攤上這事∑锝” “怎么了田篇?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)箍铭。 經(jīng)常有香客問我泊柬,道長(zhǎng),這世上最難降的妖魔是什么诈火? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任兽赁,我火速辦了婚禮,結(jié)果婚禮上冷守,老公的妹妹穿的比我還像新娘刀崖。我一直安慰自己,他們只是感情好拍摇,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布亮钦。 她就那樣靜靜地躺著,像睡著了一般充活。 火紅的嫁衣襯著肌膚如雪蜂莉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天混卵,我揣著相機(jī)與錄音映穗,去河邊找鬼。 笑死幕随,一個(gè)胖子當(dāng)著我的面吹牛蚁滋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼辕录,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼澄阳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起踏拜,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤碎赢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后速梗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肮塞,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年姻锁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了枕赵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡位隶,死狀恐怖拷窜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情涧黄,我是刑警寧澤篮昧,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站笋妥,受9級(jí)特大地震影響懊昨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜春宣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一酵颁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧月帝,春花似錦躏惋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至潦蝇,卻和暖如春款熬,著一層夾襖步出監(jiān)牢的瞬間深寥,已是汗流浹背攘乒。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惋鹅,地道東北人则酝。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親沽讹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子般卑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容