Hướng dẫn viết FileBrowser đơn giản

by degiocuondi.com 19. November 2009 12:12

 

Hướng dẫn viết FileBrowser đơn giản

I/ Giới thiệu

Bạn đã bao giờ thấy một chương trình duyệt file như thế này chưa?

 Nó là một chương trình chạy trên web, nó cho phép bạn "Đi chợ trên server". Tôi tin sau khi bạn đã làm được một FileBrowser đơn giản như FileBowser sử dụng trong bài viết này, sẽ không khó cho bạn để phát triển nó thành một công cụ duyệt file chuyên nghiệp.

II/  Xây dựng.

Trước hết, chúng ta dựng lên khung chính cho chương trình:

<table width=100% border=0>
    <
tr>
        <
td colspan=2><%showDrive%></td> // Hiển thị các ổ đĩa trên server (Drive)
    </
tr>
    <
tr>
        <
td colspan=2><span id=path><%showCurrentPath%></span> // Hiển thị đường dẫn hiện tại (Current path)
    </
tr>
    <
tr>
        <
td width=30% valign=top>
           
<%showSubFolder%> // Hiển thị các subfolder trong folder hiện tại
        </
td>
        <
td valign=top>
           
<%showFile%> // Hiển thị tất cả file trong folder hiện tại
        </
td>
    </
tr>
    <
tr>
        <
td>&#160;</td>
        <
td align=center>  // Hiển thị các nút lệnh
            <
input type=submit name=submit class=submit value='Search'>&#160;
            <
input type=submit name=submit class=submit value='Copy'>&#160;
            <
input type=submit name=submit class=submit value='Edit'>&#160;
            <
input type=submit name=submit class=submit value='Delete'>&#160;
            <
input type=submit name=submit class=submit value='Upload'>&#160;
        </
td>
    </
tr>
</
table>
 

Ở trên, chúng ta đã dựng xong xườn của trang và mô tả các hàm. Tiếp theo chúng ta sẽ xây dựng các hàm:

   + showDrive(): Liệt kê các ổ đĩa.

   + showCurrentPath(): Cho biết đường dẫn hiện tại

   + showSubFolder(): Liệt kê các subfolder trong folder hiện tại

   + showFile(): Liệt kê các file trong file hiện tại

III/ Lập trình.

    Đối tượng chúng ta sử dụng chính trong bài này là Scripting.FileSystemObject. FileSystemObject sẽ được sử dụng xuyên suốt trong bài viết này. Vì vậy ta nên khai báo đối tượng này ở đầu trang. Nên nhớ, không giống như cách sử dụng biến, sử dụng đối tượng( object) phải đúng quy tắc "Tạo, hũy", có nghĩa là có tạo nên object thì phải có giải phóng cho object đó.

<%

    // Đầu trang, tạo đối tượng fs
    Set fs = Server.CreateObject("Scripting.FileSystemObject")

    // Nội dung trang

    // Cuối trang, huỹ đối tượng fs
    Set fs = Nothing

%>

Sau đây là các hàm được viết trong phần nội dung trang.

    1/ Hàm showDrive()

Trong hàm này chúng ta quan tâm tập hợp Drives. Tập hợp này chứa tất cả các drive trên server. Bạn cũng quan tâm đến Server.MapPath, nó rất hữu dụng cho bạn trong việc biết đường dẫn tương đối thành đường dẫn tuyệt đối.

<%

Sub showDrive()
    s=" <img src= 'images/folder_close.gif'><ahref='?p="&Server.MapPath("/")&"'><b>[Root]</b></a>"
    // Server.MapPath("/") trả về thư mục gốc --> Root
    Set drv = fs.drives // Lấy tập hợp Drives
        For each d in drv  // Duyệt trong tập hợp Drives
            If d.DriveType=Remote then // Nếu đĩa không nằm trên máy hiện tại( trường hợp Map Network Drive) --> Lấy ShareName
                s = s &"  <img src = 'images/drive.gif'><ahref= '?p="&d.DriveLetter&":\'>Drive "&d.ShareName&"</a>"
            Else
                If
d.isReady then // Nếu ổ đĩa sẳn sàng --> Lấy VolumeName + DriveLetter
                s = s &" <img src = 'images/drive.gif'><ahref= '?p="&d.DriveLetter&":\'>"&d.VolumeName&"["&d.DriveLetter&"]"&"</a>"
                Else // Lấy DriveLetter
                s = s &" <img src = 'images/drive.gif'><ahref= '?p="&d.DriveLetter&":\'>Drive "& d.DriveLetter&"</a>"
                End If
            End If
        Next
        Response.Write("<span><b>" &s &"</b></span>") // Viết kết quả
    Set drv=nothing // Hũy đối tượng này
End Sub
// p: tham số truyền bằng QueryString --> Chỉ đường dẫn

%>

Kết quả:

    2/ Hàm showCurrentPath()

          Hàm này chỉ việc lấy giá trị đường dẫn hiện tại trong QueryString và xuất ra.

          <%

Sub showCurrentPath()
    Path = Request.QueryString("p")
    If Path = "" then Path = "c:\" End If //Trường hợp Path bằng rỗng thì gán giá trị mặt định "C:\"
    Response.Write("  <img src= 'images/folder_open.gif'><b><font color=red>" &p &"</font></b>") //Ghi kết quả
End Sub

%>

    3/ Hàm showSubFolder()

        Hàm này duyệt tất cả các subfolder trong folder hiện tại bằng tập hợp SubFolders và list ra kèm theo một nút check để người dùng có thể chọn lựa và thao tác hàng loạt trên các subfolder. Bạn có thể thêm một nút DeleteFolder hay CopyFolder dựa vào các check box này. Trong bài viết này thì tôi không đũ thời gian để đề cập đến vấn đề đó.

        <%

Sub showSubFolder()
    Path = Request.QueryString("p")
    If Path = "" then Path = "c:\" End If //Trường hợp Path bằng rỗng thì gán giá trị mặt định "C:\"
    Set f = fs.getFolder(Path) // Lấy folder hiện tại, Path phải là đường dẫn tuyệt đối
    Set subf = f.SubFolders // Lấy các subfolder trong folder hiện tại
    parent = Path // Tạo gía trị cho thư mục cha = folder hiện tại
    If not f.isRootfolder then // Nếu folder hiện tại không phải thư mục góc -RootFolder
        parent = fs.getParentFolderName(parent) // Lấy thư mục cha
    End If

    s = "<tr><td><img src= 'images/folder_close.gif'> <ahref='?p= " &parent &"'><b>[ . . ]</b></a><br></td><td    width= '1%'></td></tr>"
    For each sf in subf // Duyệt tất cả các subfolder trong folder hiện tại
        s = s &"<tr><td><img src='images/folder_close.gif'>" // Icon
        s = s &"<ahref = '?p="&p &"\" &sf.name &"'> " &sf.Name &"</a><br></td>" // Tên subfolder
        s = s &"<td><input type=checkbox name=folder value='" &sf.Name &"'></td></tr>" // Ô chọn subfolder
    Next
    Response.Write("<div class=textarea><table width='100%'>" &s &"</table></div>") // Hiển thị kết quả
    Set f = Nothing
    Set subf = Nothing
End Sub

        %>

        Kết quả:

       

    4/ Hàm showFile()

        Tập hợp Files chứa tất các các file trong thư mục hiện tại. Công việc của chúng ta là trỏ vào folder cần duyệt file và duyệt trong tập hợp Files. Mỗi file trong tập hợp file có các thuộc tình của nó, bạn cần biết cách khai thác các thuộc tính này.

        <%

Sub showFile
    Path = Request.QueryString("p")
    If Path = "" then Path = "c:\" End If //Trường hợp Path bằng rỗng thì gán giá trị mặt định "C:\"
    // Trong mỗi hàm đều Request giá trị p để tão giá trị cho Path

    // Vậy để tránh viết các dòng này nhiều lần, bạn có thể Request một lần và sử dụng giá trị Path như một biến toàn cục
    Set f=fs.getFolder(Path) // Lấy folder hiện tại
    Set files=f.Files // Lấy tất cả các file trong folder hiện tại
    // Tạo dòng tiêu đề các cột

    s = "<tr><td bgcolor=#cccccc width='5%'>&#160;</td>"
    s = s &"<td bgcolor=#cccccc width='30%'>Name</td>"
    s = s &"<td     bgcolor=#cccccc>Size</td>"
    s = s &"<td bgcolor=#cccccc width='25%'>Modified</td>"
    s = s &"<td bgcolor=#cccccc>Type</td>"
    s = s &"<td bgcolor=#cccccc>Attr</td></tr>"
    For each file in files //Duyệt tất cả các file
        s = s &"<tr><td>&#160;<input type=checkbox name=file value='" &file.Name &"'></td>"
        //Icon. Bạn có thể thay đổi các icon tuỳ theo đuôi file cho chương trình thêm sinh động
        s = s &"<td><img width=16 src='images/file.gif'>"
       
s = s &"<a target= '_blank'href='ViewFile.asp?p= "&p&"\" &file.Name&"'>  &file.Name &"</td>"
        s = s &"<td>" &file.Size &"     Bytes</td>"
        s = s &"<td>" &file.DateLastModified &"</td>"
        s = s &"<td>" &file.Type &"</td></tr>"
    Next
    // Xuất kết quả
    Response.Write("<div class=textarea><table width='100%'>"&s&"</table></div>")
    Set f=Nothing
    Set files=Nothing
End Sub

        %>

        Kết quả:

       

IV/ Lời cuối

Vì thời gian có hạn nên không thể đề cập chi tiết hơn. Bạn hãy phát triển FileBrowser cho riêng bạn với các chức năng đầy đủ hơn, các tính năng độc đáo hơn. Sau đây là một số gợi ý để phát triến nó thành một tool hoàn hảo:

    1/ Chức năng CopyFile, CopyFolder.

    2/ Chức năng EditFile.

    3/ Chức năng DeleteFile, DeleteFolder.

    4/ Chức năng UploadFile.

    5/ Chức năng DownloadFile.

    6/ Chức năng CompressFile, CompressFolder.

    7/ Chức năng ModifyFile, ModifyFolder.(*)

Bạn hoàn toàn có thể làm được.

Cảm ơn bạn đã đọc bài viết!

-----------------------------------------------------------

Cube      


 

Tags:

Kinh nghiệm máy chủ

Comments (6) -

10/12/2011 12:47:23 PM #

louer riad

I always was attentive in this issue also impassive am, understand it for putting up.

louer riad France | Reply

10/12/2011 3:39:40 PM #

reserver riad

I like what you ropes are up besides. Such witty process also reporting! Fulfill up the select processs ropes I’ve incorporated you ropes to my blogroll. I conjecture it resolution help the prize of my site Sourire . “A court is a point where what was confused before becomes more unsettled than ever.” by Henry Waldorf Francis.

reserver riad France | Reply

11/5/2011 12:47:15 AM #

reserver riad Marrakech

Hey There. I discovered your weblog using msn. This is a indeed well written report. I bequeath earn indisputable to bookmark it besides happen abaft to predict over of your helpful report. Bless you for the courier. I bequeath definitely repartee.

reserver riad Marrakech France | Reply

11/7/2011 12:34:22 AM #

Tout Marrakech

Saintly inscribe-up, I’m regular guest of sole’s point, claim up the gorgeous function, furthermore It is going to be a habitual guest for a pine phase. “Saintly babble is saintly prudence in belie.” by Jest Billings.

Tout Marrakech France | Reply

11/12/2011 11:21:46 PM #

voir Marrakech

I genuinely savor looking at on this network location , it accommodates brilliant couriers .

voir Marrakech France | Reply

11/15/2011 9:13:09 AM #

maroc immobilier

Woh I like your capacity , saved to favorites ! .

maroc immobilier France | Reply

Add comment

  Country flag

biuquotecode
  • Comment
  • Preview
Loading

Tài trợ bởi Lạc Tâm. Hosting bởi ProHOST
Powered by BlogEngine.NET 2.5.0.6 - Old School Theme by n3o Web Designers

Menu

Bookmark and Share Log in
 

Tài trợ

Google Pagerank icon
Search Engine Optimization and SEO Tools
Submit Sitemap