2012-06-27 36 views
0

在我的網絡服務器上,我有一個名爲03.mp4的視頻文件。
我有一個頁面(videoserver.aspx)使用下面的代碼直接或間接下載網絡文件的區別

Response.ContentType = "application/octet-stream"; 
Response.AppendHeader("Content-Disposition", "attachment; filename=video.mp4"); 
Response.TransmitFile(Server.MapPath("03.mp4")); 
Response.End(); 

擔任該文件請告訴我這2個電話有什麼區別?
1:http://localhost/media/03.mp4
2:http://localhost/media/videoserver.aspx?q=03

當我指出這些直接的網址在瀏覽器中,它會提示我一個保存對話框在這兩種情況下。
我有另一個網頁有一個SWFObject。它消耗視頻作爲輸入。好。當我提供URL 1時,它會加載視頻。
當我提供URL 2時,它不會加載視頻。

爲什麼這種差異?我更喜歡URL 2,因爲您可以根據查詢字符串動態更改提供給消費者的視頻。

回答

0

因此它證明我是SWFObject的新手。
我所指的SWFObject被Camtasia拋出,它通過FLashVars接受mp4文件。
問題是「爲什麼它在接受URL 1時不接受URL 2?」。答案是,URL 2沒有以.mp4結尾。
解決我的問題然後是,創建一個處理程序,將接受*/media/*.mp4路徑並返回適當的文件的內容,這在我的情況是從數據庫中獲取。

0

很多視頻播放器,包括新的HTML5 <video>元素,都需要支持使用HTTP Range標頭的所謂的字節範圍請求。這通常已經建立在一個自我推崇的HTTP服務器上。基本上,爲了通知客戶端所請求的URL支持字節範圍請求,服務器應該返回Accept-Ranges: bytes響應,並且能夠通過按照規範向請求的字節範圍提供所請求的字節範圍回到響應來處理所有傳入的Range請求(有關詳細信息,請參閱Range標題上的第一個鏈接)。

因此,如果您選擇完全掌握HTTP響應,而不是讓HTTP服務器執行它專用的工作,則必須仔細考慮這一點。

+0

我很抱歉,我不明白你是如何回答我的問題的。我嘗試使用'Accept-Ranges:bytes' http頭,但它不起作用。 –

+0

這還不夠:)你讀過我答案中的鏈接了嗎?在我的答案中點擊'範圍'後面的鏈接。您還需要編寫大量代碼以正確攔截傳入的'Range'請求。您需要從該頭中提取請求的字節範圍,驗證「If-Range」,從磁盤中精確檢索請求的字節範圍,並將其寫入響應,並沿着一組正確的頭文件。 Google上有幾個例子。試試關鍵字「asp.net範圍請求」左右。例如,這首擊:http://tpeczek.blogspot.com/2011/10/range-requests-in-aspnet-mvc.html – BalusC

+0

對於你更熟悉Java的情況,你可能會發現我的舊博客文章更有幫助,請查看「恢復下載」部分:http://balusc.blogspot.com/2009/02/fileservlet-supporting-resume-and.html – BalusC