2010-12-20 31 views
1

假設我們可以通過www.dl.com上的sth.avi與直接鏈接進行訪問。
例如:www.dl.com\sth.avi
另外我們有一個網站=>www.dl2.com
在ASP.NET,C#中流文件?

現在,我們想要讓一些用戶從www.dl2.com下載sth.avi,但我們沒有對www.dl2.com足夠的空間來保存sth.avi
是否有可能在ASP.NET中讓我們從www.dl.com中讀取sth.avi作爲流式文件並在不將該文件保存在我們的域上的情況下共享。

P.S:
我不想分享該鏈接www.dl.com\sth.avi,其實我想分享這樣的鏈接www.dl2.com\downloads\sth.avi

+0

您是否考慮過創建名爲'download'的虛擬目錄指向原始文件位置? – 2010-12-20 19:29:20

+2

http://xkcd.com/727/ – SLaks 2010-12-20 19:29:55

+0

流媒體服務器是嚴肅的業務。你不只是把它放在一個.net框架。如果你的超級硬盤空間有限/無法控制dl.com上的硬件,那麼你會遇到更多麻煩。總而言之,就是你說的好運。但是,首先使用流媒體服務器軟件進行搜索。 – 2010-12-20 19:32:08

回答

1

嗯....這是可行的,但它在我看來是一個壞主意。

爲了達到你的效果,你必須打開一個HTTP請求到www.dl.com(視頻的主機),然後,一旦你從那裏讀取字節,重定向到Response流。

我不能爲你提供工作的代碼,但這裏是僞代碼

using (Stream fileStream = [open HTTP request to www.dl.com]) 
{ 
    while (fileStream is not ended) 
    { 
     buffer = fileStream.Read(); 
     Response.Write(buffer); 
    } 
} 

我再說一遍:這是僞代碼

+0

你有更好的主意嗎? – 2010-12-20 19:36:41

+0

也許是** Justin Niessner **。使用Response.Redirect方法放置重定向 – 2010-12-20 19:59:30

5

而是流媒體簡單地www.dl2.com配置Web服務器爲/downloads/sth.avi請求重定向到www.dl.com/sth.avi

+0

不錯的一個!我已經開始考慮'WebClient'並返回一個流:) – Oded 2010-12-20 19:30:58

+0

哦,是啊! HTTP 301代碼太棒了! – 2010-12-20 19:32:14

+0

但是我無法爲'www.dl.com'上的每個視頻或文件做到這一點。我只寫了一個樣本。 – 2010-12-20 19:40:05

2

是的。

HttpWebRequest設置爲dl.com/...並將HttpWebResponse複製到Response.Out

確保禁用緩衝。