2011-03-11 31 views
2

我正在啓用Web應用程序,其中一個頁面有一些需要用戶應該選擇系統中的任何文件夾,並且如果他選擇了ex:D:\ xyz,則此路徑應該保存在數據庫中,我已經編寫了存儲到數據庫的代碼和剩餘的每一件事情。但實際上,我認爲,如果它像一個瀏覽按鈕單擊功能來選擇文件夾,我所做的是,因爲我不知道如何使它在Web應用程序中,我簡單地使用了一個文本框,以便能夠用戶鍵入路徑。任何人都可以幫助我如何在網頁中應用打開文件對話功能?如何將OpenFileDialog函數應用於Web應用程序

由於事先

問候 格利揚。

回答

1

沒有ASP.Net控件來選擇文件夾。

作爲一個簡單的解決方法,您可以使用FileUpload控制讓用戶選擇一個文件,您可以save the folder of that file。但是這隻會在IE中起作用,因爲其他瀏覽器不會發布完整的文件路徑,而只會發佈文件名(安全限制)。

編輯:正如本提到不工作在IE> 7任一: http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx(部分File Upload Control

+1

IE8不給路線上,IIRC。 – Ben 2011-03-11 13:38:56

0
  • 是選擇文件或文件夾的用戶?
  • 服務器上或其本地計算機上的位置?
  • 你想上傳東西,下載東西,還是隻想要路徑?

如果你想要一個服務器文件或文件夾的路徑,你必須讓服務器給出一個可供選擇的文件夾列表。

如果您只是想要本地文件的路徑,則無法從Web應用程序執行此操作。

最簡單的解決方案是告訴用戶在資源管理器中瀏覽並複製路徑以粘貼到對話框中。

+0

我只想獲得用戶通過打開對話框打開的文件夾的路徑,並且我必須將相同的路徑保存到數據庫,現在我正在向用戶提供文本框以簡單地鍵入他想要的路徑本地計算機 – 2011-03-14 06:25:35

+0

不能從Web應用程序執行此操作,對不起。這被認爲是一種安全風險。 – Ben 2011-03-14 10:19:37

1

通過右擊點擊添加上解決OPENFILE對話框參考toweb應用程序窗口探索項目名稱添加參考System.Windows.Forms 那麼這裏遵循這種編碼風格我已經給VB示例代碼,你可以,如果您遇到任何問題,這個轉換爲C#告訴我。

VB代碼

Import system.threading 

    Protected Sub btnUpload_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnUpload.Click 

    Dim objThread As New Thread(AddressOf FnOpenFileDialog) 
    objThread.IsBackground = True 
    objThread.SetApartmentState(ApartmentState.STA) 
    objThread.Start() 
End Sub 

Private Sub FnOpenFileDialog() 
    Dim openfile As New System.Windows.Forms.OpenFileDialog 
    'openfile.InitializeLifetimeService() 
    'openfile.Filter = String.Format("Image file (*.jpg)|*.jpg|All files (*.*)|*.*") 
    openfile.Filter = String.Format("Image file (*.jpg)|*.jpg") 
    openfile.Multiselect = True 
    openfile.ShowDialog() 
End Sub 
+1

這種方法是否存在風險缺陷?看起來事情的目的是跨越瀏覽器沙箱? – 2012-11-14 10:12:25

+0

是的主辦不工作,因爲這是Windows應用程序控制後,你可以去HTML或ASP文件上傳控制器,如果你面對任何問題,你可以隨時聯繫 – 2012-11-19 07:41:27

1

對於Web應用程序:

System.IO.FileInfo file = new System.IO.FileInfo(file1); 
Response.AddHeader("Content-Disposition", "attachment;filename=\"" +"Filename"+".ext"+ "\""); 
      Response.AddHeader("Content-Length", file.Length.ToString()); 
      Response.ContentType = file.Extension.ToLower(); 
      Response.WriteFile(file.FullName); 
      Response.End(); 
相關問題