asp.net文件下载,实现隐藏文件下载地址
2012-06-07 07:21:13 来源:WEB开发网核心提示:文件下载其实很简单,最简单的方式就是直接用a标签指向文件地址,asp.net文件下载,实现隐藏文件下载地址,但是这种方式暴露了文件的地址,不适合做积分下载,同样的如果文件是图片也会出现第一中方式中提到的问题,第三中就是通过服务器端更改Response 的Header实现文件的下载,同时,如果文件为图片或者xml文件的话
文件下载其实很简单。最简单的方式就是直接用a标签指向文件地址,但是这种方式暴露了文件的地址,不适合做积分下载。同时,如果文件为图片或者xml文件的话浏览器默认是打开文件而不是弹出下载窗口。
第二种就是用js实现。
function getFile(id) { jQuery.ajax({ type: "POST", dataType: "json", timeout: 3000, url: "/upload/ajax.aspx?act=getfile&r=" + Math.random(), data: { "id": id }, beforeSend: function () { }, success: function (data) { if (data.statu != "ok") { alert(data.msg); } else { window.location.href = data.res; } }, error: function (jqXHR, textStatus, errorThrown) { alert(alert(textStatus)); } }); }
这种的原理也跟第一种是一样的。虽然实现了隐藏下载地址,但是,同样的如果文件是图片也会出现第一中方式中提到的问题。
第三中就是通过服务器端更改Response 的Header实现文件的下载。
// GET: /Downoad/ public ActionResult Index() { #region 文件下载 var filePath = Server.MapPath("/images/Razor.pdf");//文件地址 FileInfo fi = new FileInfo(filePath); Response.ClearHeaders(); Response.AppendHeader("Content-Disposition", "attachment;filename=" //将文件名改成Guid + string.Format("{0:n}{1}", System.Guid.NewGuid(), fi.Extension)); //文件的大小 Response.AddHeader("Content-Length", fi.Length.ToString()); Response.AppendHeader("Last-Modified", fi.LastWriteTime.ToFileTime().ToString()); Response.AppendHeader("Location", Request.Url.AbsoluteUri); //文件的类型。如:pdf文件为:"application/pdf", //此处为"application/unknown" 未知类型(浏览器会根据文件类型自动判断) Response.ContentType = "application/unknown"; Response.WriteFile(filePath); #endregion //Response.End(); return View(); }
运行效果:
- ››asp.net页面弄成伪静态页面
- ››Asp.net 中将汉字转换成拼音的方法
- ››ASP.NET及JS中的cookie基本用法
- ››ASP.NET获取MS SQL Server安装实例
- ››asp.net实现调用百度pai 在线翻译英文转中文
- ››ASP.NET页面选项进行提示判断
- ››Asp.net定时执行程序
- ››ASP.NET中利用DataList实现图片无缝滚动
- ››ASP.NET验证控件RequiredFieldValidator
- ››ASP.NET中使用System.Net.Mail发邮件
- ››ASP.NET中获取用户控件中控件的ID
- ››ASP.NET中FileBytes写成文件并存档
更多精彩
赞助商链接