1

我在这里尝试使用 ASP.net 处理程序或其他显示二进制 .swf 文件的方法(即来自数据库)在 IE7 中显示基于 .swf 图像的文件时遇到了很大的困难。利用 HTTP 处理程序(Handler.ashx),我希望导航到该 url 并显示 .swf 图像,类似于使用浏览器打开 .swf 文件。我根本无法让它工作......

为了显示这些值,我尝试了许多不同的方法,它们在下面列出,然后是类似于我在应用程序中使用的代码片段。

1) 将 header 中的 content-disposition 值更改为使用附件时,.swf 文件将被保存,并且可以使用浏览器打开。

2) 当使用内容类型为“image/png”的 .png 文件时,这非常有效。

public void ProcessRequest (HttpContext context) {

    Byte[] swfFile = File.ReadAllBytes("file.swf");

    context.Response.Buffer = true;
    context.Response.Clear();
    context.Response.ContentType = "application/x-shockwave-flash";
    context.Response.AddHeader("Content-Disposition", "filename=file.swf");
    context.Response.BinaryWrite(swfFile);
    context.Response.Flush();
    context.Response.End();
}

任何帮助将不胜感激,在此先感谢您!

4

1 回答 1

0

您的代码将在 Chorme 浏览器中完美运行。但不是在 IE8 或 Firefox 27 中。不是将对象直接刷新到页面,而是有一个带有OBJECT标签的页面并调用另一个网页来获取 SWF 流。

  1. 带有OBJECT元素的页面

<object classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.adobe.com/pub/" width="100%" height="100%" id="myMovieName" > <param name="movie" value="http://PageWhichGivesObjectStream.aspx?id=1"/> <param name="quality" value="high"/> <param name="bgcolor" value="#FFFFFF"/> <param name="play" value="true"/> <param name="loop" value="true"/> <param name="bgcolor" value="#FFFFFF"/> <param name="allowFullScreen" value="true"/> <param name="salign" value="l"/> </object>

  1. 提供对象流的页面

    Response.ContentType = "application/x-shockwave-flash" Response.BinaryWrite(FlashObjectBinary) Response.End()

这适用于 IE8

于 2014-03-19T05:32:51.387 回答