2010-03-25 127 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请求,那么您可以解析响应头的内容长度。

相关问题