asp.net下载文件时会默认调用迅雷下载,但迅雷下载时是下载原码界面而不是文件
在网上找了很多都是问的但没看到什么解决方法,请各位遇到过此问题的大哥给予解答.代码如下:
protected void ResponseFile(string fileName, string OutFileName)
{
//创建一个文件实体,方便对文件操作
FileInfo finfo = new FileInfo(fileName);
//清空输出流
Response.Clear();
Response.Charset = "utf-8";
Response.Buffer = true;
//关闭ViewState以提高速度
this.EnableViewState = false;
//定义输出文件编码、类型和文件名
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + OutFileName);
//保存的文件类型不限,此处类型选择“unknown”。
Response.ContentType = "application/unknown"; ;
Response.WriteFile(fileName);
//清空并关闭输出流
Response.Flush();
Response.Close();
Response.End();
}
在网上找了很多都是问的但没看到什么解决方法,请各位遇到过此问题的大哥给予解答.代码如下:
protected void ResponseFile(string fileName, string OutFileName)
{
//创建一个文件实体,方便对文件操作
FileInfo finfo = new FileInfo(fileName);
//清空输出流
Response.Clear();
Response.Charset = "utf-8";
Response.Buffer = true;
//关闭ViewState以提高速度
this.EnableViewState = false;
//定义输出文件编码、类型和文件名
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + OutFileName);
//保存的文件类型不限,此处类型选择“unknown”。
Response.ContentType = "application/unknown"; ;
Response.WriteFile(fileName);
//清空并关闭输出流
Response.Flush();
Response.Close();
Response.End();
}
Response.OuputStream,Write(buffer,0,buffer.length)
说明:当单击下载按钮时从原页面转到DownLoad.aspx页面,并传来两个参数(客户ID和是否允许下载标志,刚传来时,下载标志为false,表示不可以下载)在Page_Load方法中加以下代码
string customerId = Request.QueryString["customerId"].ToString();//获取从另外页面传来的Id
string allowDown = Request.QueryString["allowDown"].ToString();//是否允许下载
if (allowDown == "false")
{
string errMsg = "";
if (CreateFile(int.Parse(customerId), ref errMsg))//生成下载文件,生成成功后再转向DownLoad.aspx页面,这里下载标志为true,允许下载
{
Response.Redirect(String.Format("{0}?customerId={1}&allowDown=true", Request.Path.ToString(), customerId));//重定向到本页面。
}
}
else if (allowDown == "true")//允许下载
{
DownLoadFile(Path_Backup_Customers + customerId + "\\test.txt", "test.txt");
}下面是下载文件的方法:
private void DownLoadFile(string FilePath, string outFileName)
{
FileInfo fi = new FileInfo(FilePath);//FilePath为文件在服务器上的地址
HttpResponse contextResponse = HttpContext.Current.Response;
contextResponse.Clear();
contextResponse.Buffer = true;
contextResponse.Charset = "GB2312"; //设置了类型为中文防止乱码的出现
contextResponse.AppendHeader("Content-Disposition", String.Format("attachment;filename={0}", outFileName)); //定义输出文件和文件名
contextResponse.AppendHeader("Content-Length", fi.Length.ToString());
contextResponse.ContentEncoding = Encoding.Default;
contextResponse.ContentType = "application/octet-stream";
contextResponse.WriteFile(fi.FullName);
contextResponse.Flush();
contextResponse.End();
}
请您看看我这里是不是什么地方写的不对
添加上这句就可以强制下载附件了,不会弹出迅雷下载之类的