2013-01-03 97 views
0

我有一些文件存儲在我的機器上。當用戶想要生成鏈接時,頁面應該生成超鏈接。該超鏈接可以通過任何其他用戶使用,以下載文件如何在asp.net中爲文件下載創建超鏈接?

+1

你是什麼意思「生成鏈接」? –

+0

所有文件的列表都顯示在頁面上..用戶必須能夠獲得該文件的鏈接,以便他/她可以在他們的朋友之間共享它。 –

+0

如果您正在獲取文件列表並顯示它,那麼您應該已經知道這些網址是什麼。只需將它們與文件名一起列出即可。 –

回答

0

有一個LinkBut​​ton和Click事件做以下

你的aspx文件將具有以下

<asp:LinkButton runat="server" OnClick="btnDownload_Click" Text="Download"/> 

您的代碼後面將有以下

protected void btnDownload_Click(object sender, EventArgs e) 
    { 
     try 
     { 


      var fileInBytes = Encoding.UTF8.GetBytes("Your file text"); 
      using (var stream = new MemoryStream(fileInBytes)) 
      { 
       long dataLengthToRead = stream.Length; 
       Response.Clear(); 
       Response.ClearContent(); 
       Response.ClearHeaders(); 
       Response.BufferOutput = true; 
       Response.ContentType = "text/xml"; /// if it is text or xml 
       Response.AddHeader("Content-Disposition", "attachment; filename=" + "yourfilename"); 
       Response.AddHeader("Content-Length", dataLengthToRead.ToString()); 
       stream.WriteTo(Response.OutputStream); 
       Response.Flush(); 
       Response.Close(); 
      } 
      Response.End(); 
      } 
     } 
     catch (Exception) 
     { 

     } 
    } 
+0

這個答案中沒有什麼關於「生成鏈接」 –

+0

好吧,我做了他想做的最終效果。是的,這可以被視爲生成下載鏈接。他必須做的唯一事情就是當他想要生成鏈接時,將事件添加到鏈接按鈕上。我的理解是,當他說生成一個鏈接,他的意思是如何創建。我的回答對他來說已經夠好了。 –

+0

@DanHunex您的回答是使用'「text/xml」',使文件無法正確下載 - 其次BufferOutput必須爲false - 也不好使用頁面下載文件 - 現在只需一個簡單的鏈接做一個完整複雜的代碼,爲什麼?具有正確路徑的簡單超鏈接完成了這項工作。你也假設文件在內存中,但是說在磁盤上,這是從內存中讀取的文件,你說的「你的文件文本」。 – Aristos

0

可以直接與該文件鏈接的超級鏈接,如果你知道地址,但是,這是由瀏覽器的限制。例如。如果客戶端上安裝了PDF閱讀器,那麼PDF將不會被下載,而是顯示出來。一個好的解決方案是有一個單獨的頁面來下載文件。只需在querystring中傳遞文件名,並在pageload事件中只傳出響應流中的文件即可。這種方式可以使用url說dwnld.aspx?filename.ext

現在,您可以通過上述邏輯生成URL。

+0

謝謝..這真的很有幫助! –