【问题标题】:How to do dynamic downloads links如何做动态下载链接
【发布时间】:2013-07-11 12:33:18
【问题描述】:

它可能不是问这个问题的正确标题,因为当我搜索它时,它给出了用于下载的动态 url 的结果。那不是我想要的……(至少我认为不是)

我的问题是我需要动态创建一个列表,例如时事通讯,该列表是使用 C# 代码和 Response.Write() 中的循环创建的。来源来自仅包含通讯的位置来源、日期和名称的数据库。代码的基本输出是:

|News Letters
|Date:       |Name:        |View button: |Download link:  |
|7/01/2013   |June News    |   [View]    |   [Download]   |
|8/01/2013   |July News    |   [View]    |   [Download]   |

或多或少...表格是循环生成的,所以它可以是任意长度。

我将如何为每封新闻信实现下载? HTML 代码只是使用一个普通的表格,视图按钮是指向源的 href 链接。

【问题讨论】:

  • 时事通讯的格式是什么? href 链接到底是什么?
  • 它是一个 pdf 文件,但它几乎可以是任何文件格式。问题还是一样。
  • 这可能会帮助您入门:stackoverflow.com/questions/6358799/…
  • 不完全...将列绑定到网格...我想添加一个下载按钮,其链接(以某种方式)附加到按钮...并且所有内容都会生成通过 C# 循环
  • 为什么不使用GridView,并在下载链接上附加一个选择属性,并在点击下载时根据所选索引构建您的下载?

标签: c# html asp.net


【解决方案1】:

我不是 100% 关于您如何尝试返回信息,但这将需要一个 SqlDataReader 并将数据读取器响应中的每一行添加到表中的新行并构建一个 HTML 字符串。

StringBuilder sb = new StringBuilder();
        sb.Append("<table><th>Date</th><th>Name</th><th>View</th><th>Download</th>");


        while (sqlDataReader.Read())
        {
            sb.Append(string.Format("<tr><td>{0}</td><td>{1}</td><td>{2}</td><td><a href='{3}' download>Download</a></td></tr>", sqlDataReader["Date"], sqlDataReader["Name"],
                          sqlDataReader["LocationSource"], sqlDataReader["LocationSource"]));
        }

        sb.Append("</table>");

        return sb.ToString();

我做了一点调整,注意到我已经把下载放在了链接标签中。这是一个 HTML 5 功能,将强制下载而不是在浏览器中打开,更多信息在这里 Force a browser to save file as after clicking link

【讨论】:

  • 不幸的是,这不起作用,因为我也需要它。虽然是的,它会打开 pdf 文档,但我需要它直接下载 pdf 而无需先打开它。
  • “它将打开 pdf 文档,但我需要它直接下载 pdf 而无需先打开它” - 然后您应该为此返回正确的 HTTP 标头.
【解决方案2】:

如果您使用的是 HTML5,您只需将“下载”一词添加到 href 链接的末尾即可。

<a href="link to newsletter.pdf" download>Download link</a>

这将强制下载,而不是像往常一样打开 pdf。

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    相关资源
    最近更新 更多