2012-01-02 110 views
2

我正在一個文件管理系統中工作。我已經上傳了一個文件到服務器上的一個目錄中,並且我列出了所有上傳文件的文件名爲linkbutton的gridview。如何從服務器目錄打開文件?

我的問題是,我必須在單擊文檔名稱時打開該特定文件,這實際上是一個鏈接按鈕。這是我的代碼。

protected void gdlbtnDocName_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     LinkButton lkbtn = (LinkButton)sender; 
     if (File.Exists(lkbtn.CommandArgument)) 
     { 
      System.Diagnostics.Process.Start(lkbtn.CommandArgument); 
     } 
    } 
    catch (Exception ex) 
    { 
     lblMessage.Text = ex.Message.ToString(); 
    } 
} 

lkbtn.CommandArgument是文件路徑說(G:\ dms \ eg.text)。 這段代碼在開發centre中工作正常。但是當我發佈它並在本地主機上運行時,它不起作用。

任何一個可以幫助我,請....

+0

這是一個Web應用程序或WinForms的? – Nicolai 2012-01-02 10:20:53

+0

它是一個web應用程序 – ksg 2012-01-02 10:40:56

回答

1

你面臨的問題是,會的Process.Start您的服務器,以便該文件將在您的本地主機沒有打開上運行,但在服務器上。

如果要打開存儲在服務器上的文檔,首先必須將其下載到本地計算機。 如果這不是一個選項,您可以創建用戶可以在瀏覽器中查看的文檔的預覽。

如何創建預覽取決於您要顯示的文件類型。

對於一個簡單的文本文件,你可以直接讀取服務器上的文件和渲染的字符串(確保做一些Html Encoding!)

在一個項目中,我對我們的工作也必須顯示PDF和Word文件。我們最終使用Aspose的商業產品。當用戶將文件上傳到服務器時,我們立即處理文件通過Aspose,然後將結果緩存在文件系統上。


+0

嗨Wouter我明白了這個問題。可以告訴你如何創建一個文檔的預覽。我新來的c# – ksg 2012-01-02 10:49:00

+0

@ksg我已經添加了一些更多的信息。不要猶豫,問你是否有任何問題。 – 2012-01-06 07:42:27

3

你需要像下面這樣的腳本來從服務器機器上下載文件。 process.start將不起作用這個

在下面的腳本我下載csv文件從服務器上點擊按鈕。

string attachment = "attachment; filename=OutputPeoplesoft.csv"; 
    HttpContext.Current.Response.AppendHeader("content-disposition", attachment); 
    HttpContext.Current.Response.ContentType = "text/csv"; 
    HttpContext.Current.Response.AppendHeader("Pragma", "public"); 
    Response.WriteFile(strFilename); 
    HttpContext.Current.Response.End(); 
+0

嗨Pranay我不想下載。我只是想查看點擊的文件 – ksg 2012-01-02 10:36:24

+0

比你在@Nasir回答中提供的gof ro iframe選項 – 2012-01-02 10:39:48

0

您可以使用iframe用於此目的和路徑設置爲iframe的源這樣

<iframe src="G:\dms\eg.text"></iframe> 
相關問題