无法使用httpHandler在页面上显示.swf文件 [英] Can't display .swf files on a page with httpHandler

查看:287
本文介绍了无法使用httpHandler在页面上显示.swf文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请阅读最近的编辑。

我有一个页面,我应该显示一些媒体数据。
为此,我正在使用html标记,如下所示:

 < object type =video / x- ms-wmvwidth =320height =240> 
< param name =srcvalue =some_media_url/>
< param name =AutoSizevalue =true>
< param name =ShowDisplayvalue =false>
< param name =AutoStartvalue =false>
< param name =StretchToFitvalue =true>
< param name =bgcolorvalue =#ffffff/>
< / object>

在我的情况下,我应该通过一些MediaHandler.ashx http处理程序从SQL服务器获取媒体数据。
当我得到一个音频(.mp3,.wma)或视频(.flv,.mp4)流这工作正常。
但是我遇到了一些.swf文件的问题。
对于这种类型的文件,我将< object>键入为application / x-shockwave-flash。在这种情况下,当我使用一些远程路径,如 http://www.tizag.com/pics/ example.swf ,它工作正常:

 < object type =application / x-shockwave-flash width =320height =240> 
< param name =srcvalue ='http://www.tizag.com/pics/example.swf'/>
< param name =AutoSizevalue =true>
< param name =ShowDisplayvalue =false>
< param name =AutoStartvalue =false>
< param name =StretchToFitvalue =true>
< / object>

但是,它不适用于我的处理程序。它既不适用于本地路径,如c:\videos\example.swf



任何想法?

编辑:其实媒体的src看起来像这样:

 < object type =video / x-ms-wmv width =320height =240> 
< param name =srcvalue =http:// localhost:11111 / MediaHandler.ashx?Id = 1111/>
< param name =AutoSizevalue =true>
< param name =ShowDisplayvalue =false>
< param name =AutoStartvalue =false>
< param name =StretchToFitvalue =true>
< param name =bgcolorvalue =#ffffff/>
< / object>

编辑

 < object type =application / x- shockwave-flashwidth =320height =240> 
< param name =srcvalue =/ videos / ETFflash1016.swf/>
< param name =AutoSizevalue =true>
< param name =ShowDisplayvalue =false>
< param name =AutoStartvalue =true>
< param name =StretchToFitvalue =true>
< / object>

但是当我使用httpHandler从DB获取文件时:

 < object type =application / x-shockwave-flashwidth =320height =240> 
< param name =srcvalue =http:// localhost:57031 / MediaHandler.ashx?Id = 512429/>
< param name =AutoSizevalue =true>
< param name =ShowDisplayvalue =false>
< param name =AutoStartvalue =true>
< param name =StretchToFitvalue =true>
< / object>

不会显示flash。



I比较了这些情况下的输出html,它们在两种情况下都是一样的(除了src参数值)。 Fiddler对.swf文件和浏览器显示(例如在IE开发工具的Netwok标签)的这两个请求都显示相同的结果,即在这两种情况下文件都被下载到客户端。
但是在处理程序的情况下,不会显示flash。

解决方案


对于.swf文件的两个请求,Fiddler显示的结果是相同的。

在Fiddler,Response Headers中,执行本地文件和ASHX处理程序同样的 Content-Type:application / x-shockwave-flash ?


Read the last EDIT, please.

I have a page in which I should display some media data. For this I'm using html tag, like this:

<object type="video/x-ms-wmv" width="320" height="240">
    <param name="src" value="some_media_url" />
    <param name="AutoSize" value="true">
    <param name="ShowDisplay" value="false">
    <param name="AutoStart" value="false">
    <param name="StretchToFit" value="true">
    <param name="bgcolor" value="#ffffff" />
</object>

In my case, I should get media data from SQL server by some MediaHandler.ashx http handler. When I get an audio(.mp3, .wma) or video(.flv, .mp4) stream this works fine. But I'm getting some problems with .swf flash files. For this type of files I change <object> type to be "application/x-shockwave-flash". In this case when I use some remote path, like http://www.tizag.com/pics/example.swf, it works fine:

<object type="application/x-shockwave-flash" width="320" height="240">
    <param name="src" value='http://www.tizag.com/pics/example.swf' />
    <param name="AutoSize" value="true">
    <param name="ShowDisplay" value="false">
    <param name="AutoStart" value="false">
    <param name="StretchToFit" value="true">
</object>

But, it doesn't work with my handler. It neither works with local paths,like "c:\videos\example.swf"

Any idea?

EDIT: Actually src for media looks like this:

<object type="video/x-ms-wmv" width="320" height="240">
    <param name="src" value="http://localhost:11111/MediaHandler.ashx?Id=1111" />
    <param name="AutoSize" value="true">
    <param name="ShowDisplay" value="false">
    <param name="AutoStart" value="false">
    <param name="StretchToFit" value="true">
    <param name="bgcolor" value="#ffffff" />
</object>

EDIT:

This works fine, if I directly refer to an existing file:

 <object type="application/x-shockwave-flash" width="320" height="240">
        <param name="src" value="/videos/ETFflash1016.swf" />
        <param name="AutoSize" value="true">
        <param name="ShowDisplay" value="false">
        <param name="AutoStart" value="true">
        <param name="StretchToFit" value="true">
    </object>

But when I use httpHandler to get file from DB:

<object type="application/x-shockwave-flash" width="320" height="240">       
    <param name="src" value="http://localhost:57031/MediaHandler.ashx?Id=512429" />
    <param name="AutoSize" value="true">
    <param name="ShowDisplay" value="false">
    <param name="AutoStart" value="true">
    <param name="StretchToFit" value="true">
</object>

flash is not displayed.

I've compared the output html for these cases, they're the same in both cases (except src param value). Fiddler shows the same result for both requests for .swf file and the browser shows(e.g. in IE dev tool's Netwok tab) that the file was downloaded to client in both cases. BUT in the case with the handler, flash is not being displayed.

解决方案

Fiddler shows the same result for both requests for .swf file

In Fiddler, Response Headers, do both the local file and ASHX handler return the same Content-Type: application/x-shockwave-flash ?

这篇关于无法使用httpHandler在页面上显示.swf文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆