2012-08-30 108 views
2

我在這裏要做的是讓我的用戶在網絡上的數據服務器中選擇一個路徑,以便我可以生成一個配置文件。在ASP.net中的文件夾瀏覽

我希望能夠在我的asp.net頁面上覆制OpenFileDialog()的功能。但是這個函數在asp.net上不存在,我知道asp.net中有這個控件調用FileUpload。但是我在這裏需要的只是該文件夾的路徑/目錄。我不需要上傳我的文件。

怎麼辦?

+0

這是一個真正的MVC問題或一個webforms/asp經典問題? – Tommy

回答

1

在Web應用程序中這樣做很棘手。您必須枚舉要瀏覽的服務器上的文件夾(推測這與運行Web應用程序的服務器相同),然後將該層次結構呈現給用戶以選擇文件夾。如果它不是太大的層次結構,那麼你可以先列舉整個組,然後將它顯示在樹中。如果這很重要,那麼可以使用Ajax方法:選擇頂層文件夾,然後發送Ajax請求以獲取下一個級別,依此類推。

要枚舉文件夾,您需要自己走文件系統。單程請參閱http://msdn.microsoft.com/en-us/library/dd997370(v=vs.100).aspx

1

不,對此沒有內置控制。這不是一個正常的要求,因爲大多數網站不會讓用戶看到他們的文件結構。

建立一個這樣做的用戶控件很簡單。

我建議使用一個TreeView的asp.net控件,附加到你已經列出文件的數據源。

binding a treeview上的這個樣本應該讓你開始。

可以使用

var path = Server.MapPath("/"); 
var dirs = Directory.[EnumerateDirectories][2](path); 
var files = Directory.[EnumerateFiles][3](path); 

最後,以使它看起來像一個對話框,填入你的數據,你可以使用jQuery UI dialog組件。

0

asp.net網站與您的服務器是完全斷開連接的環境。正如其他人所提到的,要複製OpenFileDialog(),您需要查看文件夾結構並將其顯示給Web /斷開連接的環境中的用戶。在這種情況下,用戶從實際的文件系統中抽象出來......因爲這種抽象已經發生,所以現在是考慮你正在使用的路線的好時機。可能值得考慮的是,不需要直接複製文件系統,您可以管理數據庫中的「虛擬」文件夾結構,並在其中維護磁盤上的文件的鏈接/路徑?

0

我已經找到解決的辦法是,這僅僅是爲尋找答案: -

保護無效browse_Click(對象發件人,EventArgs的) {

 Thread thdSyncRead = new Thread(new ThreadStart(openfolder)); 
     thdSyncRead.SetApartmentState(ApartmentState.STA); 
     thdSyncRead.Start(); 

    } 
    public void openfolder() 
    { 

     FolderBrowserDialog fbd = new FolderBrowserDialog(); 
     DialogResult result = fbd.ShowDialog(); 

     string selectedfolder = fbd.SelectedPath; 


     string[] files = Directory.GetFiles(fbd.SelectedPath); 
     System.Windows.Forms.MessageBox.Show("Files found: " + files.Length.ToString(), "Message"); 

    } 
+0

對於上面的代碼工作,必須使用System.Threading;使用System.Windows.Forms; – VishwajeetMCA

相關問題