นี่คือเบราว์เซอร์ไฟล์ FSO ที่เขียนโดยใช้วัตถุคอลเลกชัน FSO (หากคุณยืนยันว่าเป็นโทรจัน ฉันไม่มีข้อโต้แย้งใด ๆ ) ในทางปฏิบัติแล้ว มันเลียนแบบการออกแบบ "โทรจันยอดนิยมแห่งมหาสมุทร" แต่โค้ดจะถูกเขียนใหม่ทั้งหมด การใช้ส่วนประกอบเช่น Shell.Application ที่สามารถทำให้เกิดการฆ่าโดยไม่ได้ตั้งใจด้วยซอฟต์แวร์ป้องกันไวรัส มีเครื่องมือที่คล้ายกันมากมายบนอินเทอร์เน็ต มูลค่าการใช้งานของเครื่องมือนี้ไม่มากนัก แต่โค้ดหลายตัวในนั้นถือว่าเขียนได้ดี
คุณสมบัติที่สำคัญ ได้แก่ : ดูข้อมูลดิสก์ เรียกดูไฟล์ในดิสก์ และดำเนินการในลักษณะเดียวกับ Windows Explorer เช่น การสร้าง การลบ การเปลี่ยนชื่อ การคัดลอก การย้าย และการดำเนินการแก้ไขไฟล์ข้อความพื้นฐานอื่นๆ
การดาวน์โหลดไฟล์ในโหมดสตรีมช่วยลดความยุ่งยากและเพิ่มประสิทธิภาพการอัปโหลด/การแพ็กไฟล์แบบไม่มีส่วนประกอบ สามารถแพ็ก/แตกแพ็กโฟลเดอร์ได้อย่างสมบูรณ์
ข้อมูลโค้ด:
1. แฟ้มบรรจุภัณฑ์/แกะชิ้นส่วน
-
-
- แพ็ค ย่อย ( ByVal FPath, ByVal sDbPath)
- Server.ScriptTimeOut=900
- Dim DbPath
- ถ้า ขวา(sDbPath,4)= ".mdb" แล้ว
- DbPath=sDbPath
- อื่น
- DbPath=sDbPath ".mdb"
- จบ ถ้า
- ถ้า oFso.FolderExists(DbPath) แล้ว
- EchoBack "ไม่สามารถสร้างไฟล์ฐานข้อมูลได้!" &แทนที่(DbPath, "", \")
- ออก ย่อย
- จบ ถ้า
- ถ้า oFso.FileExists(DbPath) แล้ว
- oFso.DeleteFile DbPath
- จบ ถ้า
- ถ้า IsFolder(FPath) แล้ว
- RootPath=GetParentFolder(FPath)
- ถ้า ถูกต้อง(RootPath,1)<> "" ดังนั้น RootPath=RootPath&" "
- อื่น
- EchoBack "กรุณาป้อนเส้นทางโฟลเดอร์!"
- ออก ย่อย
- จบ ถ้า
- Dim oCatalog, connStr, DataName
- ตั้งค่า conn=Server.CreateObject( "ADODB.Connection" )
- ตั้งค่า oStream=Server.CreateObject( "ADODB.Stream" )
- ตั้งค่า oCatalog=Server.CreateObject( "ADOX.Catalog" )
- ตั้งค่า rs=Server.CreateObject( "ADODB.RecordSet" )
- บน ข้อผิดพลาด ประวัติย่อ ต่อไป
- connStr = "ผู้ให้บริการ=Microsoft.Jet.OLEDB.4.0; แหล่งข้อมูล=" & DbPath
- oCatalog สร้าง connStr
- หาก ผิดพลาด แล้ว
- EchoBack "ไม่สามารถสร้างไฟล์ฐานข้อมูลได้!" &แทนที่(DbPath, "", \")
- ออก ย่อย
- จบ ถ้า
- ตั้งค่า oCatalog= ไม่มีเลย
- conn.เปิด connStr
- conn.Execute( "สร้างไฟล์ตาราง (ID int IDENTITY(0,1) คีย์หลักที่คลัสเตอร์, FilePath VarChar, FileData Image)" )
- oStream.เปิด
- oStream.Type=1
- rs.เปิด "ไฟล์" ,conn,3,3
- DataName=ซ้าย(oFso.GetFile(DbPath).Name,InstrRev(oFso.GetFile(DbPath).Name, "." )-1)
- NoPackFiles=แทนที่(NoPackFiles, "<$datafile>" ,DataName)
- FailFileList= ""
- PackFolderFPath
- ถ้า FailFilelist= "" แล้ว
- EchoClose "การบรรจุโฟลเดอร์สำเร็จ!"
- อื่น
- Response.Write "<link rel= stylesheet type= text/css href= ?page=css >"
- Response.Write "<Script Language= JavaScript >alert( Folder packaging complete!nThe following is a list of files that failed to be package: );</Script>"
- Response.Write "<body>" &แทนที่(FailFilelist, "|" , "<br>" ) "</body>"
- จบ ถ้า
- oStream.ปิด
- rs.ปิด
- เชื่อมต่อปิด
- จบ ย่อย
-
- PackFolder ย่อย (เส้นทางโฟลเดอร์)
- ถ้า ไม่ใช่ IsFolder(FolderPath) แล้ว ออก ย่อย
- หรี่ oFolder, sFile, sFolder
- ตั้ง ค่า oFolder=oFso.GetFolder(FolderPath)
- สำหรับ แต่ละ sFile ใน oFolder.Files
- ถ้า InStr(NoPackFiles, "|" &sFile.Name "|" )<1 จากนั้น
- PackFile sFile.Path
- จบ ถ้า
- ต่อไป
- ตั้งค่า sFile = ไม่มีเลย
- สำหรับ แต่ละ sFolder ใน oFolder.SubFolders
- PackFolder sFolder.Path
- ต่อไป
- ตั้งค่า sFolder= ไม่มีเลย
- จบ ย่อย
-
- ไฟล์แพ็ค ย่อย (FilePath)
- ดิม เรลพาธ
- RelPath=แทนที่(FilePath,RootPath, "" )
-
- บน ข้อผิดพลาด ประวัติย่อ ต่อไป
- ผิดพลาด.เคลียร์
- ผิดพลาด= เท็จ
- oStream.LoadFromFile FilePath
- rs.เพิ่มใหม่
- rs( "FilePath" )=RelPath
- rs( "FileData" )=oStream.Read()
- อาร์เอสอัปเดต
- หาก ผิดพลาด แล้ว
-
- FailFilelist=FailFilelist&FilePath "|"
- จบ ถ้า
- จบ ย่อย
-
-
- คลายแพ็ค ย่อย (vFolderPath, DbPath)
- Server.ScriptTimeOut=900
- Dim FilePath, FolderPath, sFolderPath
- FolderPath=vFolderPath
- FolderPath=ตัดแต่ง(FolderPath)
- ถ้า กลาง(FolderPath,2,1)<> : แล้ว
- EchoBack "รูปแบบเส้นทางไม่ถูกต้องและไม่สามารถสร้างไดเร็กทอรีได้!"
- ออก ย่อย
- จบ ถ้า
- ถ้า ขวา(FolderPath,1)= "" จากนั้น FolderPath=ซ้าย(FolderPath,Len(FolderPath)-1)
- ดิม คอนสตรัท
- ตั้งค่า conn=Server.CreateObject( "ADODB.Connection" )
- ตั้งค่า oStream=Server.CreateObject( "ADODB.Stream" )
- ตั้งค่า rs=Server.CreateObject( "ADODB.RecordSet" )
- connStr = "ผู้ให้บริการ=Microsoft.Jet.OLEDB.4.0; แหล่งข้อมูล=" & DbPath
- บน ข้อผิดพลาด ประวัติย่อ ต่อไป
- ผิดพลาด= เท็จ
- conn.เปิด connStr
- หาก ผิดพลาด แล้ว
- EchoBack "ข้อผิดพลาดในการเปิดฐานข้อมูล!"
- ออก ย่อย
- จบ ถ้า
- ผิดพลาด= เท็จ
- oStream.เปิด
- oStream.Type=1
- rs.เปิด "ไฟล์" ,conn,1,1
- FailFilelist= ""
- ทำ ถึงวันที่ rs.EOF
- ผิดพลาด.เคลียร์
- ผิดพลาด= เท็จ
- FilePath=FolderPath ""&rs(" FilePath")
- FilePath=แทนที่(พาธไฟล์, "\", " ")
- sFolderPath=ซ้าย(FilePath,InStrRev(FilePath, "" ))
- ถ้า ไม่ใช่ oFso.FolderExists (sFolderPath) แล้ว
- CreateFolder(sFolderPath)
- จบ ถ้า
- oStream.SetEos()
- oStream.Write rs( "ข้อมูลไฟล์" )
- oStream.SaveToFile FilePath,2
- หาก ผิดพลาด แล้ว
- FailFilelist=FailFilelist&rs( "FilePath" ).ค่า "|"
- จบ ถ้า
- rs.MoveNext
- วนซ้ำ
- rs.ปิด
- ตั้งค่า rs = ไม่มีเลย
- เชื่อมต่อปิด
- ตั้งค่า conn= ไม่มีอะไร
- ตั้งค่า oStream = ไม่มีเลย
- ถ้า FailFilelist= "" แล้ว
- EchoClose "การแตกไฟล์สำเร็จ!"
- อื่น
- Response.Write "<link rel= stylesheet type= text/css href= ?page=css >"
- Response.Write "<Script Language= JavaScript >alert(Folder packaging complete!nThe following is a list of files that failed to be package, please check);</Script>"
- Response.Write "<body>" &แทนที่(FailFilelist, "|" , "<br>" ) "</body>"
- จบ ถ้า
- จบ ย่อย
-
2. ส่วนอัพโหลดไฟล์ (ไฟล์เดียว):
- บันทึกย่อย อัปโหลด ( ByVal FolderName)
- ถ้า ไม่ใช่ IsFolder (ชื่อโฟลเดอร์) จากนั้น
- EchoClose "ไม่ได้ระบุโฟลเดอร์อัพโหลด!"
- ออก ย่อย
- จบ ถ้า
-
เส้นทาง Dim, - เส้นทาง
- IsOverWrite =
ชื่อโฟลเดอร์ - ถ้า ใช่(Path,1)<> "" ดังนั้น Path=Path&" "
- FileName=Replace(Request( "filename" ), ""," ")
- ถ้า Len(ชื่อไฟล์)<1 แล้วก็
- EchoBack "โปรดเลือกไฟล์และป้อนชื่อไฟล์!"
- ออก ย่อย
- จบ ถ้า
- เส้นทาง=เส้นทาง
- ถ้า LCase(Request( "overwrite" ))= "true" จากนั้น
- IsOverWrite= True
- อย่างอื่น
- IsOverWrite= เท็จ
- จบ ถ้า
- บน ข้อผิดพลาด ประวัติย่อ ต่อไป
- เรียก MyUpload (เส้นทาง, IsOverWrite)
- หาก เกิดข้อผิด พลาด
- EchoBack "การอัปโหลดไฟล์ล้มเหลว! (ไฟล์อาจมีอยู่แล้ว)"
- อื่น
- EchoClose "อัปโหลดไฟล์สำเร็จแล้ว!n" & แทนที่ (ชื่อไฟล์, "", " \")
- จบ ถ้า
- จบ
- ย่อย
- Sub MyUpload (FilePath, IsOverWrite)
- Dim oStream,tStream,ชื่อไฟล์,sData,sSpace,sInfo,iSpaceEnd,iInfoStart,iInfoEnd,iFileStart,iFileEnd,iFileSize,RequestSize,bCrLf
- RequestSize=Request.TotalBytes
- ถ้า RequestSize<1 แล้ว ออก ย่อย
- ตั้งค่า oStream=Server.CreateObject( "ADODB.Stream" )
- ตั้งค่า tStream=Server.CreateObject( "ADODB.Stream" )
- ด้วย oStream
- .Type=1
- .Mode=3
- .Open
- .Write=Request.BinaryRead(RequestSize)
- .Position=0
- sData=.Read
- bCrLf=ChrB(13)&ChrB(10)
- iSpaceEnd=InStrB(sData,bCrLf)-1
- sSpace =LeftB(sData,iSpaceEnd)
- iInfoStart=iSpaceEnd+3
- iInfoEnd=InStrB(iInfoStart,sData,bCrLf&bCrLf)-1
- iFileStart=iInfoEnd+5
- iFileEnd=InStrB(iFileStart,sData,sSpace)-3
- sData= ""
- iFileSize=iFileEnd-iFileStart+1
- tStream.Type=1
- tStream.Mode=3
- tStream.Open
- .Position=iFileStart-1
- .CopyTo tStream,iFileSize
- ถ้า IsOverWrite ดังนั้น
- tStream.SaveToFile FilePath,2
- อื่น
- tStream.SaveToFile FilePath
- จบ ถ้า
- tStream.Close
- .Close
- จบ กับ
- SettStream = ไม่มีอะไร
- ตั้งค่า oStream= ไม่มีอะไร
- สิ้นสุด ย่อย