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?+?"?目錄不存在或不允許訪問(wèn)!")

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í)沒(méi)有可更新的文件下載"

'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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • 事件源對(duì)象 event.srcElement.tagName event.srcElement.type 捕獲釋放...
    孤魂草閱讀 997評(píng)論 0 0
  • (源自摘抄整理)https://www.91ri.org/11494.html Webshell實(shí)現(xiàn)與隱藏探究 一...
    JackyTsuuuy閱讀 21,209評(píng)論 2 13
  • 朋友圈盛傳此文,我沒(méi)有跟風(fēng)轉(zhuǎn)發(fā),因?yàn)槲液苷J(rèn)真地閱讀了這篇文章! 拿俞老師說(shuō)事,俞老師知道嗎? 首先,我很疑惑:俞老...
    彩鳳知音閱讀 758評(píng)論 0 3
  • 夜深人靜時(shí),躺下來(lái)仔細(xì)想想,人活著真不容易,復(fù)雜的社會(huì),看不透的人心,放不下的責(zé)任,經(jīng)歷不完的坎坷,越不過(guò)的無(wú)奈,...
    ec406fac4d1a閱讀 406評(píng)論 0 0

友情鏈接更多精彩內(nèi)容