跨多个浏览器使用asp.net显示图像和文档

时间:2010-02-02 15:42:57

标签: asp.net firefox

我有一个名为DisplayBinaryData.aspx的网页 - 此页面的目的是显示/下载任何单词,excel,pdf或图像。我调用此网页并使用查询字符串传递我的BinaryData实体的ID。 BinaryData实体包含使用asp.net fileUploadControl上传的文件,文件名和内容类型。页面加载中的代码如下:

    BinaryData obj = GetBinaryObjectById(int.Parse(Request.QueryString["id"]));

    Response.Clear();

    Response.BufferOutput = true;

    Response.AddHeader("Content-Disposition", "attachment; filename=" + obj.FileName);

    Response.ContentType = obj.FileContentType;

    Response.BinaryWrite(obj.BinaryFile);

    Response.Flush();

    Response.Close();

    Response.End();

此代码在IE中执行完美,但在FireFox中执行时失败。 IE会提示用户保存或打开内容。 FireFox还会提示用户,但对话框无法保存或打开任何内容。在谷歌浏览器中执行此操作时 - 没有对话框,它会自动开始下载内容。

我的问题:我需要这段代码与FireFox兼容 - 有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您在Chrome中提到的行为只是针对Chrome的默认设置。您可以通过转到“选项”窗口的“引擎盖下”选项卡来更改它们。然后选中“询问下载前保存每个文件的位置”复选框。

你的obj.FileName名称中是否有空格? 在不同的浏览器中查看“Content Disposition”上的这篇文章。

  

内容配置不同   浏览器

     

今天我必须解决一个问题   在不同的浏览器中提交   动态生成的下载工作   非常不同/根本没有

     

设置,我们有一个带有的xml文件   自定义扩展,比如.mj,这是   由ASP提供服务。 HTTP   标题有内容处理   标题和响应类型集。

Response.AddHeader "Content-Disposition", "attachment; filename=""our file.mj"""
Response.ContentType = "text/xml"
  

这在Internet Explorer中运行良好   文件被下载为“我们的file.mj”。   然而,FireFox和Chrome表现得非常好   不同的是,在FireFox中,文件是   仅下载“我们的”和Chrome   作为“我们的file.xml”。在FireFox中   似乎问题是由   这个文件名中有一个空格   funkdaddu的论坛帖子帮助了我   这个,所以通过删除空间FireFox   现在可以下载文件了   “ourfile.mj”。 ...