2012-12-19 40 views
0

請閱讀最後一次編輯。無法在httpHandler頁面上顯示.swf文件

我有一個頁面,我應該顯示一些媒體數據。 對於這個我使用的HTML標籤,就像這樣:

<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> 

在我的情況,我應該通過一些MediaHandler.ashx HTTP處理程序從SQL服務器獲取媒體數據。 當我得到音頻(.mp3,.wma)或視頻(.flv,.mp4)流時,這工作正常。 但我遇到了一些.swf flash文件的問題。 對於這種類型的文件,我將<object> type更改爲「application/x-shockwave-flash」。在這種情況下,當我用一些偏遠的路徑,像http://www.tizag.com/pics/example.swf,它工作正常:

<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> 

但是,它不與我的處理程序工作。它既不適用於本地路徑,如「c:\ videos \ example.swf」

任何想法?

編輯:其實SRC媒體是這樣的:

<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> 

編輯:

這工作得很好,如果我直接引用現有的文件:

<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> 

但當我使用httpHandler從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> 

不顯示閃光燈。

我比較了這些情況下的輸出html,它們在兩種情況下都是相同的(除了src參數值)。 Fiddler對.swf文件和瀏覽器顯示(例如在IE開發工具的Netwok標籤)的這兩個請求都顯示相同的結果,即在這兩種情況下文件都被下載到客戶端。 但在處理程序的情況下,不會顯示閃光燈。

+0

如果瑞士法郎是在本地主機,爲什麼你使用絕對位置,而不是簡單的相對的?唯一的「文件夾/ file.swf」應該工作。如果你看不到它,請檢查文件本身的權限。如果您讓我們知道如何通過網絡訪問文件以便在jsfiddle中運行測試,這將非常有用。謝謝。 –

回答

0

試試這個:

<object type="application/x-shockwave-flash" data="file.swf" style="width:640px;height:480px;margin:10px 36px;"> 
<param name="movie" value="file.swf" /> 
<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> 

它爲我工作

+0

感謝您的回覆。你的代碼和我一樣工作。它不適用於MediaHandler返回的.swf數據(寫入響應)。 – Gev

+0

請嘗試http://code.google.com/p/swfobject/ – sveatlo

+0

感謝您的鏈接,但它不適用於httpHandler :( – Gev

1

提琴手顯示了兩種請求.swf文件

在提琴手,響應頭,一舉兩得相同的結果本地文件和ASHX處理程序返回相同的Content-Type: application/x-shockwave-flash

+0

是的,不僅僅是「Content-Type」,但所有的Response Headers參數都是 – Gev

0

我已經解決了!

在處理程序中,我將Response Header的參數設置爲與直接引用現有文件的情況相同的值。

現在,我只是刪除了所有這些值,它的工作原理! 我仍然不明白爲什麼,但它的工作原理:)

+0

可以請你分享完整的代碼嗎? – khawarPK

+0

可以請你分享一下完整的代碼嗎? 我有同樣的問題運行,我也想從http處理器獲得swf源代碼,請爲這個處理程序共享代碼和客戶端 – khawarPK