Di ASP, FSO berarti objek sistem file, yang merupakan objek sistem file.
Sistem file komputer yang akan kami manipulasi mengacu pada berada di server web. Jadi, pastikan Anda memiliki izin yang tepat untuk ini. Idealnya, Anda dapat mengatur server web di mesin Anda sendiri sehingga Anda dapat dengan mudah melakukan pengujian. Jika berjalan di Windows, coba PWS server web pribadi Microsoft gratis.
Objek model FSO
Objek Drive: Drive Objects untuk Mengakses Disk atau Drive Jaringan
Objek FileSystemObject: Objek sistem file untuk mengakses sistem file komputer
Objek folder: Objek folder untuk mengakses semua properti folder
Objek TextStream: Objek Stream Teks untuk Mengakses Konten File
Anda dapat menggunakan objek di atas untuk melakukan apa pun di komputer Anda, termasuk aktivitas sabotase ;-( Jadi, berhati-hatilah dengan FSO. Di lingkungan web, sangat penting untuk menyimpan informasi, seperti informasi pengguna, file log, dll. FSO Memberikan cara yang kuat dan sederhana untuk menyimpan data secara efisien.
FSO ditenagai oleh Microsoft dan ASP mungkin tidak lagi tersedia untuk sistem non-windows.
Bagaimana cara menggunakan FSO?
Untuk menggunakan FSO untuk melakukan semua pekerjaan, pertama -tama buat objek, kode seperti ini:
| < %Set FSO = Server.CreateObject (Scripting.FilesystemObject) % > |
Ini membuat FSO dan memberikan FSO variabel. Di sini kita dapat menggunakan fso.method atau fso.property, yang akan terlihat dalam contoh berikut.
Model FSO terletak di file DLL runtime skrip yang disediakan oleh Microsoft, yaitu Scrrun.dll. Anda dapat merujuk file DLL ini dalam aplikasi apa pun, seperti MS Access, Word. Artinya, tidak hanya terbatas untuk menerapkannya di ASP.
Berikut adalah daftar singkat metode FSO:
| Metode FSO | |
| CopyFile | Salin satu atau lebih file ke jalur baru |
| CreateTextFile | Buat file dan kembalikan objek TextStream |
| Dihapus | Hapus file |
| OpenTextFile | Buka file dan kembalikan objek TextStream untuk membaca atau menambahkan |
Jika Anda ingin mengetahui metode dan properti FSO lengkap, silakan merujuk ke Microsoft MSDN. Mari kita lihat beberapa contoh di bawah ini.
Misalkan Anda ingin membuat buku tamu sederhana di mana Anda dapat membuat database tempat Anda menyimpan informasi pengguna. Namun, menggunakan FSO untuk menyimpan informasi akan menghemat waktu dan uang Anda jika kekuatan database tidak diperlukan. Dan, beberapa ISP dapat membatasi aplikasi basis data di web.
Misalkan Anda telah mengumpulkan beberapa informasi pengguna dalam suatu formulir, berikut adalah bentuk kode HTML sederhana:
| < html > < Tubuh > < Formulir Tindakan = FormHandler.asp Metode = Posting > < Jenis input = ukuran teks = 10 nama = nama pengguna > < Jenis input = ukuran teks = 10 nama = beranda > < Jenis Input = Ukuran Teks = 10 Nama = Email > < /bentuk > < /tubuh > < /html > |
Mari kita lihat kode yang memproses formulir di formhandler.asp:
| < % 'Dapatkan info formulir strname = request.form (nama pengguna) strhomepage = request.form (beranda) stremail = request.form (email) 'Buat objek FSO Atur fso = server.createObject (scripting.filesystemObject) |
Sejauh ini, tidak ada yang baru yang tidak lebih dari mendapatkan nilai bidang formulir dan menetapkan nilai ke variabel. Bagian yang menarik muncul di bawah - tulis file:
| Path = C: emp est.txt Forreading = 1, forwriting = 2, forpinging = 3 'Buka file Setel file = fso.opentextFile (path, forprespending, true) 'Tulis info ke file file.write (strname) & vbcrlf file.write (strhomepage) & vbcrlf file.write (stremail) & vbcrlf 'Tutup dan Bersihkan file.close atur file = tidak ada atur fso = tidak ada |
Ingatlah bahwa metode OpEntextFile mengembalikan objek TextStream, yang merupakan objek lain dalam model FSO. Objek TextStream mengungkapkan cara untuk memanipulasi konten file, seperti menulis, membaca, dan melewatkan garis. VBCRLF konstan VB menghasilkan karakter garis baru.
Benar didefinisikan dalam parameter perintah OpenTextFile, yang memberi tahu sistem bahwa jika file tidak ada, buatlah. Jika file tidak ada dan parameter sebenarnya tidak ditentukan, kesalahan terjadi.
Sekarang buka direktori C: emp, terbuka test.txt, dan Anda dapat melihat informasi berikut:
| Nama pengguna Beranda pengguna Email pengguna |
Tentu saja, kata -kata ini dapat digantikan oleh apa pun yang dimasukkan ke dalam formulir.
Sekarang beberapa informasi pengguna disimpan dalam file, seperti database sederhana. Misalkan ada pengguna yang ingin mengenal semua pengunjung dan memisahkan bagian yang relevan dari informasi terdaftar karena tidak ada kolom terstruktur seperti database.
Kita tahu bahwa dalam file yang dibuat, baris 1 adalah nama pengguna, baris 2 adalah beranda mereka, dan baris 3 adalah alamat email mereka. Pengguna terdaftar juga akan menyimpan informasi mereka dalam struktur ini, sehingga setiap 3 baris akan berisi informasi pendaftaran satu pengguna. Mengetahui hal ini, Anda dapat menulis kode berikut untuk menampilkan informasi:
| < % 'Buat objek FSO atur fso = server.createObject (scripting.filesystemObject) Path = C: emp est.txt 'Buka file atur file = fso.opentextFile (path, 1) < - untuk Membaca |
Selanjutnya, analisis setiap baris dan format data:
| lakukan sampai file.atendofstream Response.write (nama: & file.readline &) Response.write (Halaman Beranda: & File.Readline &) Response.write (email: & file.readline & < p >) lingkaran 'Tutup dan Bersihkan file.close atur file = tidak ada atur fso = tidak ada %> |
Ini hanya output yang sangat sederhana, tetapi Anda dapat memasukkan informasi formulir tabel atau DHTML sesuai dengan situasinya.
Jika file telah dibuat dan ditulis dengan benar, loop kecil di atas akan mencantumkan informasi semua orang dalam database. Metode Readline membaca 1 baris konten sampai garis baru ditemui, dan panggilan readline berikutnya akan membaca baris berikutnya. Atendofstream adalah properti dari objek TextStream yang memberi tahu kami ketika kami menemukan ekor file.
Asumsikan bahwa untuk beberapa alasan kami tidak membentuk file dengan benar, jika pengguna hanya memiliki 2 baris informasi alih -alih 3 baris, maka beberapa kesalahan akan terjadi. Loop kami di sini mengambil 3 baris informasi berikutnya dalam file.
| Kesalahan Objek Server 'ASP 0177: 800A003E' |
Oleh karena itu, pastikan untuk menambahkan beberapa kode penanganan kesalahan untuk mencegah garis yang tidak perlu dimasukkan ke dalam file atau informasi baris yang diperlukan tidak ada.
Pengetahuan dasar dibahas di atas, dan kemudian masalah izin dibahas. FSO berjalan dengan akun pengguna yang membuatnya, dengan kata lain, jika seseorang mengakses halaman Anda dari internet, maka akun internet ini membuat FSO. Jika Anda masuk ke komputer sebagai administrator dan masuk ke halaman, akun administrator membuat FSO. Ini sangat penting karena akun tertentu memiliki izin tertentu, dan FSO memerlukan beberapa izin untuk sepenuhnya menjalankan fungsi.
Akun Internet (iuser_machinename, Machinename adalah nama server) umumnya hanya memiliki izin membaca, yang berarti bahwa pengguna tidak akan dapat menulis ke file buku tamu. Namun, ada beberapa opsi untuk memotong masalah ini.
Pertama -tama, ini juga sangat sulit, mengharuskan pengguna untuk masuk ke server sebelum mengisi buku tamu. Namun, poin kunci dari buku tamu adalah untuk mengumpulkan informasi dari pengguna anonim, dan jika pengguna diminta untuk masuk, Anda harus tahu siapa mereka. Jadi, lewati opsi ini dan lihat yang berikutnya.
Metode kedua adalah membuat direktori atau file, dan pengguna iUser_machinename memiliki izin menulis. Melakukan hal itu dapat membuka beberapa kerentanan keamanan potensial, karena siapa pun yang mengetahui direktori yang benar dan memiliki beberapa keterampilan web dapat mengisi konten di server. Ini adalah tabu yang serius. Jadi, Anda harus mengonfirmasi bahwa informasi dari direktori yang dapat ditulis ini disimpan di tempat tersembunyi dan mengatur direktori ini di luar struktur direktori web sebanyak mungkin (misalnya, di bawah Windows, ini adalah direktori yang tidak ada di direktori inetpub).
Anda mungkin berpikir: Oke, sekarang saya tahu cara menulis ke file. Tapi bisakah kita melakukan lebih banyak? Mari kita coba membuat fungsi pencarian untuk situs web.
Kunci untuk membangun mesin pencari adalah rekursi. Terutama, tulis sepotong kode untuk mencari file di direktori, dan kemudian jalankan kode yang sama di semua loop direktori. Karena tidak mungkin untuk menentukan berapa banyak subdirektori yang total, kode pencarian harus dieksekusi berulang -ulang sampai selesai. Panggilan rekursif sangat bagus!
Mari kita buat halaman pencarian. Misalkan formulir HTML telah dibuat, di mana pengguna memasukkan string pencarian.
| Redup objolder Redup strsearchText Redup objfso strsearchText = request.Form (SearchText) < - String pencarian 'Buat objek folder dan folder Atur fso = server.createObject (scripting.filesystemObject) Setel objolder = objfso.getFolder (server.mappath (/)) Cari objolder |
Kode di atas hanya menginisialisasi variabel, dan fungsi pencarian mengeksekusi fungsi pencarian, yang digambarkan sebagai berikut:
| Pencarian fungsi (objolder) Redup objsubfolder 'Lingkari setiap file di saat ini map Untuk setiap objfile di objolder.files Setel objtextStream = objfso.opentextFile (objfile.path, 1) < - untuk membaca 'Baca konten file ke variabel StrfileContents = objtextStream.readall 'Jika string pencarian ada di file, lalu Tulis tautan 'ke file If instr (1, strfileContents, strsearchText, 1) Response.write < a href =/ & objfile.name & _ > & objfile.name & < /a >< br > bolfilefound = true Akhiri jika objtextStream.close Berikutnya 'Inilah bagian rekursi - untuk masing -masing 'Subfolder di direktori ini, jalankan fungsi pencarian lagi Untuk setiap objsubfolder di objolder.subfolder Cari objsubfolder Berikutnya Fungsi akhir |
Agar dapat membuka file, FSO memerlukan jalur file yang sebenarnya, bukan jalur web. Misalnya, ini adalah C: inetpubwwwroot empiindex.html, bukan www.enfused.com/temp/index.html atau /temp/index.html. Untuk mengonversi yang terakhir ke yang pertama, gunakan server.mappath (nama file), nama file untuk mewakili nama jalur web.
Kode di atas akan dieksekusi di setiap subdirektori folder di bawah direktori awal yang Anda tentukan, di mana direktori awal mengacu pada direktori root web/. Kemudian cukup buka setiap file di direktori untuk melihat apakah berisi string yang ditentukan.
Perhatikan bahwa ketika jumlah file dan subdirektori meningkat, waktu yang dibutuhkan untuk pencarian akan meningkat. Jika Anda memerlukan pekerjaan pencarian yang berat, Anda disarankan untuk mengambil metode lain, seperti server indeks indeks Microsoft.
Pada titik ini, Anda mungkin memiliki pemahaman yang baik tentang FSO. Mari kita lihat lebih dalam untuk menyelesaikan masalah yang lebih kompleks.
Pertama, Anda mungkin ingin mengganti nama file. Untuk melacak semua dokumen, Anda akan ingin mengganti nama menjadi unik sehingga dapat dengan mudah dibedakan oleh sistem. Sayangnya, FSO tidak mengizinkan operasi perubahan nama file sederhana, jadi kami harus memodifikasinya.
| < % 'Buat objek FSO atur fso = server.createObject (scripting.filesystemObject) Path = C: emp est.txt strdate = ganti (date (), /,) strdir = c: inetpubwwwrootartikel & strdate strnewfileName = jam (sekarang) & _ & menit (sekarang) & _ & kedua (sekarang) & .html 'Buka file lama Setel file = fso.opentextFile (path, 1) < - untuk membaca strtext = file.readall atur file = tidak ada 'Periksa dan/atau buat folder Jika tidak fso.folderexists (server.mappath (strdir)) maka set f = fso.createFolder (server.mappath (strdir)) kalau tidak Setel f = fso.getFolder (server.mappath (strdir)) akhiri jika 'Buat dan tulis file baru Setel file = fso.createTextFile (f.path & & strnewfileName) file.write (strtext) set f = tidak ada file.close atur file = tidak ada 'Hapus file lama fso.deleteFile (Path & & Rst (FileName) & i) 'Bersihkan atur fso = tidak ada %> |
Kurangnya kemampuan FSO telah menjadi keuntungan di sini, dan kami dapat melakukan 2 langkah sekaligus. Pertama, buka file dan baca konten file. Misalkan di sini Anda ingin membuat folder unik dan file unik untuk menyimpan artikel. Namun, karena jalur ke folder akan berubah setiap hari, itu harus pertama kali diperiksa apakah folder sudah ada dan jika tidak ada, buat. Ini dilakukan di cuplikan FSO.Folderexists. Kemudian, ambil jalur itu dan buat file baru. Setelah file baru dibuat, hapus file lama, yang dilakukan melalui fso.deleteFile.
2 langkah ini adalah: ganti nama file dan kemudian pindahkan ke direktori yang lebih cocok. Perhatikan bahwa Anda juga dapat melakukan lebih banyak operasi pada file di sini, seperti mengedit konten sebelum menulis ke file baru.
FSO memang memiliki beberapa kelemahan - misalnya, sulit untuk menangani file biner, yang mencakup dokumen kata, file dalam banyak format grafis, dan beberapa file lainnya. Namun, Anda masih dapat memanipulasi file -file ini dengan cara lain - pindahkan, hapus, dll. Yang tidak dapat Anda lakukan hanyalah membuka atau menulisnya.
Keterbatasan lain adalah masalah panjang file. Ketika beberapa konten dibaca dan ditulis segera, semua informasi disimpan dalam memori - semakin banyak konten, semakin banyak memori yang dikonsumsi. Ini akan memperlambat setiap pekerjaan. Oleh karena itu, jika Anda perlu mengoperasikan file yang sangat besar, atau sejumlah besar file kecil, pertimbangkan untuk membagi file menjadi potongan -potongan kecil dan sering membersihkan memori. Memasukkan aplikasi ke dalam komponen objek COM juga dapat sangat meningkatkan kecepatan program.
Demikian pula, Anda tidak dapat menggunakan FSO untuk mengelola izin dan file file dan folder. Metode ini sering digunakan dalam CGI dan Perl, tetapi sayangnya, tidak ada cara yang memuaskan untuk mengimplementasikannya dengan FSO.
Apa lagi yang bisa saya lakukan dengan FSO?
Ada banyak fitur hebat di FSO, tetapi banyak orang tidak menyadarinya. Fungsi -fungsi ini sering ditemukan setelah Anda merasa sulit untuk melakukan sesuatu.
Berikut adalah beberapa fitur yang tidak menyenangkan tetapi sangat keren ini:
Fitur FSO yang jarang dipahami
Metode GetSpecialFolder Mengembalikan jalur ke folder Windows tertentu: Direktori Instalasi Windows Windows; Metode GetAbsolutePathName Mengembalikan jalur absolut ke folder (mirip dengan server.mappath) saat menyimpan data sementara.
Misalnya, fso.getAbsolutePathname (wilayah) akan mengembalikan hasil yang mirip dengan yang berikut: C: MyDocsmyfolder oksida
GetExtensionName Metode Mengembalikan ekstensi bagian terakhir dari jalur (misalnya: fso.getextensionName (c: docs est.txt) akan mengembalikan txt) GetBaseName dan Metode GetParentFolder Mengembalikan folder induk dari bagian terakhir dari jalur
(Misalnya: fso.getParentFolder (c: docsmydocs) akan mengembalikan 'docs') mendorong properti mengembalikan koleksi semua drive lokal yang tersedia untuk membangun antarmuka pengguna seperti browser sumber daya.
Saat menggunakan fungsi di atas, yang terbaik adalah membuat kode untuk penanganan kesalahan. Karena jika parameter yang diperlukan tidak ada, informasi yang merepotkan akan dihasilkan.
Meringkaskan
Seperti yang telah kita lihat, FSO sangat berguna, dan apa yang kita perkenalkan di sini hanyalah puncak gunung es. Anda dapat menggunakan FSO untuk membangun aplikasi yang kuat dan cukup menyelesaikan banyak tugas.