【问题标题】:c# swf banner is not displyedc# swf横幅不显示
【发布时间】:2015-12-10 14:48:59
【问题描述】:

我下载 swf 横幅

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 文件存储在数据库中并根据自定义逻辑显示它们。所以我不能依赖 url。 有什么建议吗?

【问题讨论】:

    标签: c# asp.net flash swfobject


    【解决方案1】:

    自从我做了 ASP Web 表单的东西以来,它几乎是一个解码,但是从参数名称Text 来看,可以肯定地说组件期望一个 swf 文件的 path .

    看来,您正试图将 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;
    

    【讨论】:

      猜你喜欢
      • 2012-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      相关资源
      最近更新 更多