protected void LinkButton1_Click1( object sender , EventArgs e ) { int row = ( (GridViewRow)( (LinkButton)sender ).NamingContainer ).RowIndex; string wenname = subll.getgnamebyid( Convert.ToInt32( grshow.Rows[row].Cells[0].Text ) ); string filename = Server.MapPath( "~/" + subll.getway( Convert.ToInt32( grshow.Rows[row].Cells[0].Text ) ) ); DownLoad( wenname , filename ); } private void DownLoad( string strName , string strPath ) { string fileName = strName;//客户端保存的文件名 FileStream fs = new FileStream( strPath , FileMode.Open ); byte[] bytes = new byte[(int)fs.Length]; fs.Read( bytes , 0 , bytes.Length ); fs.Close( ); Response.ContentType = "application/octet-stream"; //通知浏览器下载文件而不是打开 Response.AddHeader( "Content-Disposition" , "attachment; filename=" + HttpUtility.UrlEncode( fileName , System.Text.Encoding.UTF8 ) ); Response.BinaryWrite( bytes ); Response.Flush( ); Response.End( ); }
点击linkbutton老是下载自己的这个aspx页面 不知道怎么回事。谷歌 火狐 没问题 求解释 ie8.。。什么的都有问题
if (e.CommandName == "xiazai") { String fileName = e.CommandArgument.ToString(); if (fileName != "") { //获得文件的存储路径 string path = Server.MapPath(fileName); System.IO.FileInfo file = new System.IO.FileInfo(path); if (file.Exists) { Response.Clear(); Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(file.Name, System.Text.Encoding.UTF8)); Response.AddHeader("Content-Length", file.Length.ToString()); Response.ContentType = "application/octet-stream"; Response.Filter.Close(); Response.WriteFile(file.FullName); Response.End(); } else { CommonFunc.showMessage(this.Page, "文件不存在"); //Response.Write("<script>alert('文件不存在');</script>"); } }
试试这个,是在gridview里用的
用这种方法试过 也是同样的效果 不知道怎么回事呢
@小 莫: Response.Clear();这句话用了没??
你调试一下看看你的filename是什么?
路径没问题。。。调试过的
@小 莫: 把linkbutton换成button试试? ^-^
先要Response.Clear()
不行,就打开一个新的链接下载就行了
能下载就行了
报文头里面添加了东西不要将报文头作为输出响应流输出出去吗?
浏览器导致额 本身代码没问题