c#swf横幅未显示

本文关键字:显示 c#swf | 更新日期: 2023-09-27 18:26:22

我下载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#swf横幅未显示

自从我完成ASP web表单的工作以来,这几乎是一个解码过程,但从参数名称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;