c#swf banner不显示

时间:2015-12-10 14:48:59

标签: c# asp.net flash swfobject

我下载swf banner

var data = new HTTPProxy().GetBytes(swfUrl);
string base64String = Convert.ToBase64String(data, 0, data.Length);
litSwf.Text = "data:application/x-shockwave-flash;base64," + base64String;

并显示在我的页面上:

<asp:PlaceHolder ID="phHead" runat="server">
<script type="text/javascript" language="javascript">
$(document).ready(function () {
    $('#banner').flash({
        swf: '<asp:Literal ID="litSwf" runat="server" />',
        height: '100%',
        width: '100%',
        wmode: 'transparent'
    });
});
</script>
</asp:PlaceHolder>

和html看起来像这样:

<object data="data:application/x-shockwave-flash;base64,Q1dTC(...)N/XRmG"     type="application/x-shockwave-flash" id="flash_397386681" width="100%"   height="100%">
<param name="wmode" value="transparent">
<param name="movie" value="data:application/x-shockwave- flash;base64,Q1dTC(...)/XRmG">
</object>

但不显示横幅。如果我直接输入网址:

litSwf.Text = swfUrl;

然后工作正常。 这是更大解决方案的一部分,我必须将swf文件存储在数据库中并根据自定义逻辑显示它们。所以我不能依赖网址。 有什么建议吗?

1 个答案:

答案 0 :(得分:0)

因为我已经完成了ASP网页表单,所以几乎是一个解码,但从参数名称Text判断,可以说组件期望路径到一个swf文件。

所以看起来,您试图将base64二进制数据推送到期望路径的组件中。

您需要做的是创建一个单独的ASP页面/处理程序,用于显示二进制数据。然后使用该页面作为路径。

你的ASP页面看起来像这样(这只是我的头脑,没有经过测试或必须是精确的代码):

//pass the swf url in as a querystring parameter

//get your bytes from your database
var data = new HTTPProxy().GetBytes(swfUrl);

//set the content type:
Response.ContentType = "application/x-shockwave-flash"; //not sure if this is right or not
Response.BinaryWrite(data);

然后在你的另一页:

litSwf.Text = "mySwfHandler.aspx?swfUrl=" + swfUrl;