如何在开始下载远程文件之前获取其大小?

nnt7mjpx  于 2022-10-31  发布在  Apache
关注(0)|答案(2)|浏览(131)

我需要在下载之前弄清楚远程文件的大小。我知道在本地可以这样做

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";
它不起作用。我如何才能在使用

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

谢谢你!

xytpbqjk

xytpbqjk1#

我现在想的是这样使用progress事件:
下载URL:URL请求;“文件名:字符串=“SomeFile.pdf”;变量文件:文件引用;

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);,但我不确定它是否会工作,如果没有下载过程开始,因为没有请求发送到文件。

zc0qhyus

zc0qhyus2#

我从来没有使用过Action Script,但是看起来你是通过http下载文件的,你要找的是http头中的content_length。Http确实有一个HEAD请求,以及更著名的GET和POST。如果你能弄清楚如何发出HEAD请求,那么你就可以解析响应头中的内容长度。

相关问题