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