2012-06-21 29 views
0

即時消息我在做什麼是我有一個動態表和創建行,這一切工作正常。在其中一個單元格,我試圖創建一個鏈接,點擊後會打開一個文件。但是當我點擊鏈接時,它給我一個錯誤,說無法找到服務器的文件。然後,我所做的檢查文件是我在地址欄中輸入位置,並找到它,但將地址更改爲(file:/// c:/inetpub/wwwroot/test1.txt)。所以我所做的就是把這個地址放入錨標籤中,但是它仍然不起作用。這是我到目前爲止。任何幫助將非常感激。如何使用定位標記打開文件

tblrow = New TableHeaderRow 
tblcell = New TableHeaderCell 
tblcell.Text = "<a href='C://inetpub/wwwroot/test1.txt' target='_blank'>" & Test & "</a>" 
tblrow.Cells.Add(tblcell) 
tableName.Rows.Add(tblrow) 

回答

4

使用URL而不是物理路徑。

變化

<a href='C://inetpub/wwwroot/test1.txt' target='_blank'> 

以絕對URL位置

<a href='http://DOMAIN/test1.txt' target='_blank'> 

或相對URL位置,如果該文件位於您的網站

<a href='RELATIVE_PATH/test1.txt' target='_blank'> 
0
  1. 大多數操作系統不支持直接文件調用,因爲的安全原因。您必須使用臨時位置或從服務器加載文件。

  2. 您的文件應該位於虛擬目錄中,並使用完整的URL作爲其他帖子提及。

0

您應該考慮使用異步處理程序(ASP.NET)來下載文件。最終,錨點在瀏覽器中啓動另一個請求,該請求會將文件下載到用戶。

這是一篇文章,其中包含一些來自MSDN的信息。

這裏是你會在處理程序中編寫代碼示例:

public void ProcessRequest(HttpContext context) { 
    // read input etx 
    context.Response.Buffer = false; 
    context.Response.ContentType = "text/plain"; 
    string path = @"c:\somefile.txt"; 
    FileInfo file = new FileInfo(path); 
    int len = (int)file.Length, bytes; 
    context.Response.AppendHeader("content-length", len.ToString()); 
    byte[] buffer = new byte[1024]; 
    Stream outStream = context.Response.OutputStream; 
    using(Stream stream = File.OpenRead(path)) { 
     while (len > 0 && (bytes = 
      stream.Read(buffer, 0, buffer.Length)) > 0) 
      { 
       outStream.Write(buffer, 0, bytes); 
       len -= bytes; 
      } 
    } 
} 

希望這有助於

+0

代碼從這裏被借用:http://stackoverflow.com/questions/608480/best -WAY到流文件,在-ASP網 –

相關問題