我有一个asp.net页面,它将文件的内容发送到客户端,因此浏览器显示另存为对话框以下载文件.此页面以弹出窗口显示,当用户单击保存按钮时,它会自动关闭并开始下载.
在Windows Server 2003上,它工作正常.在与其他浏览器的Vista上,也可以正常工作.但是当我尝试使用IE7和Vista时,弹出窗口会打开,并在大约一秒后关闭而不显示文件下载对话框.我怎么解决这个问题?
我用于响应生成的代码是:
FileStream fileStream = new FileStream(filePath, FileMode.Open); int fileSize = (int)fileStream.Length; byte[] buffer = new byte[fileSize]; fileStream.Read(buffer, 0, (int)fileSize); fileStream.Close(); Response.Clear(); Response.Buffer = true; Response.BufferOutput = true; Response.ContentType = "application / octet - stream"; Response.AddHeader("Content-Length", buffer.Length.ToString()); Response.AddHeader("Content-Disposition", "attachment; filename=" + filename); Response.AddHeader("Extension", Path.GetExtension(filename)); Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1254"); Response.BinaryWrite(buffer); Response.Flush(); Response.End();
我用这个javascript打开弹出窗口:
window.open ('Download.aspx?filename=somefile.ext','downloadWindow','location=0,status=0,scrollbars=0,);
编辑:我纠正了空格,但不幸的是他们不是问题.
编辑2 ::似乎这个问题与Vista无关,只与IE有关.我还发现,当项目在本地开发服务器上运行时,它工作正常,但是当连接到发布服务器时,它无法下载文件.
尝试删除你的空格ContentType
.标准是application/octet-stream
.