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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在开始下载之前,如何获取远程文件的大小?相关的知识,希望对你有一定的参考价值。

我需要在下载之前弄清楚远程文件的大小。我知道在本地这可以按如下方式完成

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";

谢谢!

答案

我现在想到的是使用这样的progress事件:

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

另一答案

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

以上是关于在开始下载之前,如何获取远程文件的大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取远程存储图像的文件大小? (php)

从零开始配置vim(27)——代码片段

从零开始配置vim(27)——代码片段

从零开始配置vim(27)——代码片段

无需下载文件的远程文件大小

如何以最少的下载量获取远程MP3的持续时间