2010-03-25 129 views
2

我需要找出一個遠程文件的大小之前,我下載it.And我知道,在當地的地方如下如何在開始下載之前獲取遠程文件的大小?

var _filePath:String = "X:/save/abc.exe"; 
var file:File = new File(_filePath); 
if (file.size > 1000) 
{ 
    trace("too large"); 
} 

這是可以做到的,但,當我試圖遠程文件就像

var _filePath:String = "http://www.aaa.com/webfile.exe";

它沒有work.And我怎樣才能得到一個遠程文件的大小,以前我用

var _downLoadPath:String = "http://www.aaa.com/webfile.exe"; 

謝謝!

回答

5

我心目中現在就是用這樣的進展情況:

var downloadURL:URLRequest; 
var fileName:String = "SomeFile.pdf"; 
var file:FileReference; 

function FileReference_event_progress() 
{ 
downloadURL = new URLRequest(); 
downloadURL.url = "http://www.aaa.com/webfile.exe"; 
file = new FileReference(); 
file.addEventListener(ProgressEvent.PROGRESS, progressHandler); 
file.download(downloadURL, fileName); 
} 

function progressHandler(event:ProgressEvent):void 
{ 
var file:FileReference = FileReference(event.target); 
trace(event.bytesTotal); 
} 

該腳本將輸出文件的總大小(但輸出的下載過程開始之後)。你可以做的就是在第一部分文件和總大小一起收到後立即停止下載 - 這就是我喜歡的解決方法。

你可以嘗試的另一件事是使用trace(file.bytesTotal);而不是file.download(downloadURL, fileName);,但我不確定它會工作,沒有下載過程開始,因爲沒有請求發送到文件。

2

我從來沒有使用動作腳本,但是因爲它顯示你正在通過http下載文件,你正在尋找的是http頭中的content_length。 Http確實有HEAD請求以及更爲人熟知的GET和POST。如果您可以弄清楚如何創建HEAD請求,那麼您可以解析響應頭的內容長度。

相關問題