2013-01-03 101 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

谢谢..这真的很有帮助! –