2009-12-06 79 views

回答

0

嘗試使用URLStream類。它有bytesAvailable屬性。它應該返回一些可用的字節數來下載

+0

在大多數情況下,由於安全策略問題,流式傳輸將無法啓動。 – Amarghosh 2009-12-07 04:59:24

1

你不能直接通過ActionScript來做到這一點。在獲得文件大小之前,您需要先下載文件。一旦下載請求完成,您可以通過LoaderInfo類獲取文件的總字節數。顯然這有文件繼續下載的不良副作用。

兩種解決方案...一個在服務器上有一個包含文件大小的xml文件(如果手動完成,這是一個真正的麻煩,因爲文件大小很容易改變)。

您可能有某種服務器端解決方案,您可以請求獲取特定文件的大小。或者讓它設置爲爲您所有文件的文件大小生成xml。可能有很多服務器端解決方案。由於它不是我的專業領域,我不能真正推薦最好的方法。

我的看法是,它很少值得麻煩。通常有一個設計決定可以避免必須檢索這種信息。這就是說可能有一個合理的理由來保證服務器端的工作。

+0

嘗試下載的另一個問題是,由於缺少策略文件,大多數時候請求都會失敗,這也是有道理的。 – Amarghosh 2009-12-07 04:58:08

+0

如果您有權訪問服務器,則可以添加允許訪問特定位置內容的策略文件。這是非常普遍的。 – 2009-12-07 08:26:37

+0

如果有人可以訪問服務器,那麼他應該按照您的建議在服務器端進行操作。獲取文件大小後加載和取消聽起來不是一個好主意。 – Amarghosh 2009-12-07 10:51:03

-1

感謝您的提示,它的工作原理非常棒。請參閱下面的示例

var httpStream:URLStream = new URLStream(); 
httpStream.load(httpRequest); 

httpStream.addEventListener( Event.COMPLETE, 
       function(e:Event):void{ 
                trace(httpStream.bytesAvailable); 
          });