您的位置:首页 > Web前端 > JavaScript

通知浏览器下载文件而不是打开文件

2015-03-02 12:51 375 查看
需要在前台的html中进行设置,将onclick事件指向download_file函数并在download_file中调用后台DownLoadFile函数,以此来实现a标签中下载文件而不是打开文件。

具体代码如下:

<!----------html中调用-------------->

<a href='javascript:void(0);'  title='" + obj[i].cFilePath + "' onclick=\"" + "download_file('KnowledgeCheckHandler.ashx?flag=D&FileNewName=" + obj[i].cFileNewName + "&Pub=" + obj[i].cpublisher + "&FileOldName=" + obj[i].cFileOldName + "');\"" + ">" + obj[i].cFileOldName
+ "</a>

       <!----------------前台js-----------------> 

       function download_file(url) {

            //alert('dasd');

            if (typeof (download_file.iframe) == "undefined") {

                var iframe = document.createElement("iframe");

                download_file.iframe = iframe;

                document.body.appendChild(download_file.iframe);

            }

            download_file.iframe.src = url;

            download_file.iframe.style.display = "none";

        }    

       <!--------------------------------->

   ///后台

    private void DownLoadFile(HttpContext context, string FileNewName, string FileOldName, string Pub)

        {

            try

            {

                string fileName = FileOldName;//客户端保存的文件名 

                string path = @"../FileUpLoad/" + Pub + "/" + FileNewName;

                string filePath = context.Server.MapPath(path);//路径 

                //以字符流的形式下载文件 

                System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.Open);

                byte[] bytes = new byte[(int)fs.Length];

                fs.Read(bytes, 0, bytes.Length);

                fs.Close();

                context.Response.ContentType = "application/octet-stream";

                //通知浏览器下载文件而不是打开 

                context.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));

                context.Response.BinaryWrite(bytes);

                context.Response.Flush();

                context.Response.End();

            }

            catch (Exception e) { }

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  下载 js a标签 html