asp.net 通过response写的下载控件怎么实现下载

iwantadream 2015-05-09 12:32:11
我是通过这样
Response.Write("<a href='javascript:void(0);'onclick='javascript:saveAs(" + table.Rows[i]["地址"] + ")' >下载</a>");
数据库每有一条数据 就有一个对应的下载连接 路径我存在在数据表的地址字段里
实现效果如图
在页面 我写了一个js
<script type="text/javascript>
function saveAs(url) {
alert(url);
if (typeof url == 'object')
alert('hhh');
url = url.src;
window.win = open(url);
setTimeout('win.document.execCommand("SaveAs")', 500);
}
</script>
但是点击下载后 没有任何效果 审查元素有个错误 请问我这种该怎么实现对应的下载呢 求大神例子 因为我不懂格式语法
...全文
383 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2015-05-14
  • 打赏
  • 举报
回复
例子
<%@ Page Language="C#" EnableViewState="false" %>

<script runat="server">  
 
  protected void Page_Load(object sender, EventArgs e)
  {
    //一般情况下,通过id传参数,然后查库,查库省略
    String id = Request.Params.Get("id");
    //安全性验证省略。。。
    //根据id查库得到文件路径省略。。。
    //假如查出的文件路径是/upload/20130508/1.bmp,
    String file = Request.PhysicalApplicationPath + "/upload/20130508/1.bmp";
    file = file.Replace("/", "\\").Replace("\\\\","\\");
    Response.Clear();
    Response.ContentType = "application/octet-stream";
    if (Request.UserAgent.Contains("MSIE") || Request.UserAgent.Contains("msie")) {
      Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("文件下载后的名称", System.Text.Encoding.UTF8) + System.IO.Path.GetExtension(file));
    }
    else
    {
      Response.AddHeader("Content-Disposition", "attachment; filename=" + "文件下载后的名称" + System.IO.Path.GetExtension(file));
    }
    Response.WriteFile(file);//向客户端输出流。
    Response.Flush();
    Response.End();
  }
</script>
iwantadream 2015-05-13
  • 打赏
  • 举报
回复
引用 5 楼 net_lover 的回复:
download.aspx.cs里面
protected void Page_Load(object sender, EventArgs e)
{
String file = "根据参数找到你的物理文件地址"; //这里是单文件,不是全部文件
Response.Clear();
Response.ContentType ="application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("文件下载后的名称", System.Text.Encoding.UTF8));
Response.WriteFile(file);//向客户端输出流。
Response.Flush();
Response.End();
}

用这种方法能下载了 可是下载的东西是这种样子的 打开后不是我想要的效果 。。
  • 打赏
  • 举报
回复
string fileName = Request.QueryString["fileName"];//这样容易被人猜出来,或者改成唯一性标号,后台根据此编号获取对应的文件路径
<a href="download.aspx?fileName=aabbcc.zip">aabbcc.zip</a>
iwantadream 2015-05-11
  • 打赏
  • 举报
回复
引用 5 楼 net_lover 的回复:
download.aspx.cs里面 protected void Page_Load(object sender, EventArgs e) { String file = "根据参数找到你的物理文件地址"; //这里是单文件,不是全部文件 Response.Clear(); Response.ContentType ="application/octet-stream"; Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("文件下载后的名称", System.Text.Encoding.UTF8)); Response.WriteFile(file);//向客户端输出流。 Response.Flush(); Response.End(); }
谢谢 可是现在是我这么多个下载 就是不懂怎么拼接href 把每个不同的下载连接附上id 这样我才能根据id区分用户点击下载的是哪个?
iwantadream 2015-05-10
  • 打赏
  • 举报
回复
引用 2 楼 net_lover 的回复:
你应该写这种链接 <a href="download.ashx?file=xxxxx">下载</a> ashx或者aspx都可以 参见 http://www.itnose.net/detail/6252947.html
download是像这种 protected void upload(object sender, EventArgs e) { string[] values = Request.Form.GetValues("ziliao"); } 方法么 好像在网页不能调用本地aspx.cs的方法啊 我现在是卡住了不懂怎么调用了
孟子E章 2015-05-10
  • 打赏
  • 举报
回复
download.aspx.cs里面 protected void Page_Load(object sender, EventArgs e) { String file = "根据参数找到你的物理文件地址"; //这里是单文件,不是全部文件 Response.Clear(); Response.ContentType ="application/octet-stream"; Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("文件下载后的名称", System.Text.Encoding.UTF8)); Response.WriteFile(file);//向客户端输出流。 Response.Flush(); Response.End(); }
slwsss 2015-05-09
  • 打赏
  • 举报
回复
Response.Write("<a href='“ + table.Rows[i]["地址"] + "‘ >下载</a>");
  • 打赏
  • 举报
回复
<a>标签就行了
孟子E章 2015-05-09
  • 打赏
  • 举报
回复
你应该写这种链接 <a href="download.ashx?file=xxxxx">下载</a> ashx或者aspx都可以 参见 http://www.itnose.net/detail/6252947.html

62,067

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧