我正在使用以下方法下载文件。在 iframe 内点击一个按钮。除了IE之外,每个浏览器都正常工作。一些PLZ建议我解决问题
private void DownloadToBrowser(string filePath)
{
try
{
FileInfo file = new FileInfo(filePath);
Context.Response.Clear();
Context.Response.ClearHeaders();
Context.Response.ClearContent();
Context.Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
Context.Response.AddHeader("Content-Length", file.Length.ToString());
Context.Response.ContentType = "text/plain";
Context.Response.Flush();
Context.Response.TransmitFile(file.FullName);
Context.Response.End();
}
catch (Exception ex)
{
throw ex;
}
}
答案 0 :(得分:1)
我建议删除Context.Response.Flush();
行...我不认为这是必要的(因为它会作为Context.Response.End();
行的一部分发生),并且可能弄乱浏览器如何接收文件在下一行。
另外,您传输的文件肯定是纯文本文件吗?如果没有,您需要提供不同的Context.Response.ContentType();
答案 1 :(得分:0)
您很可能错过了IE所需的一些HTTP响应标头。
另请参阅关于SO的类似问题:PHP script to download file not working in IE
答案 2 :(得分:0)
您可以尝试这样的事情:
Context.Response.Buffer = true;
Context.Response.ContentType = "application/pdf";
Context.Response.AddHeader("Content-Disposition", "attachment;filename=" + FileName );
Context.Response.OutputStream.Write(dataBytes ,0,FileContentLength);
还可以尝试将此添加到您的aspx页面:
<%@ Page aspCompat="True" other attributes %>
答案 3 :(得分:0)
了解我使用数据集, 作为Excel文件下载
使用命名空间:
using System.IO;
using System.Data;
DataSet ds = new DataSet("Table");
ds.Tables.Add("Table1");
ds.Tables[0].Columns.Add("Field1");
ds.Tables[0].Columns.Add("Field2");
ds.Tables[0].Columns.Add("Field3");
ds.Tables[0].Rows.Add();
ds.Tables[0].Rows[0][0] = "1";
ds.Tables[0].Rows[0][1] = "2";
ds.Tables[0].Rows[0][2] = "3";
HttpResponse response = HttpContext.Current.Response;
// first let's clean up the response.object
response.Clear();
response.Charset = "";
// set the response mime type for excel
response.ContentType = "application/vnd.ms-excel";
response.AddHeader("Content-Disposition", "attachment;filename=sample.xls");
// create a string writer
using (StringWriter sw = new StringWriter())
{
using (HtmlTextWriter htw = new HtmlTextWriter(sw))
{
// instantiate a datagrid
DataGrid dg = new DataGrid();
dg.DataSource = ds.Tables[0];
dg.DataBind();
dg.RenderControl(htw);
response.Write(sw.ToString());
response.End();
}
}
下载为Word文件
替换
response.ContentType = "application/msword";
response.AddHeader("Content-Disposition", "attachment;filename=sample.doc");