代码之家  ›  专栏  ›  技术社区  ›  Jonny

使用flex 3检查远程文件是否存在

  •  2
  • Jonny  · 技术社区  · 15 年前

    在flex 3/as 3中,检查远程文件是否存在的好方法是什么? 我在用PHP的方式思考,在那里你可以尝试“fopen”一个远程路径(比如 http://example.com/somefile.exe “”,然后看它是否工作。我不是要求下载所有的文件,我只是想知道文件是否在那里(并且可以访问)。

    3 回复  |  直到 10 年前
        1
  •  0
  •   Will    15 年前

    您可能需要尝试加载该文件。如果您得到一个ioerror,文件不存在(或者您的路径错误)。如果它开始加载,通过触发一个进度事件,那么它就存在了。然后您可以取消其余的加载。

    或者,您可以尝试从Flash调用一个PHP脚本,该脚本执行您所描述的操作,这可能返回一个简单的true/false。

        2
  •  2
  •   Tom    14 年前

    这是我为这份工作找到的最好的代码

    var urlStream:URLStream = new URLStream();
    urlStream.addEventListener(Event.OPEN, streamHandler);
    urlStream.addEventListener(IOErrorEvent.IO_ERROR, streamHandler);
    urlStream.load(new URLRequest("SOME_FILE"));
    
    function streamHandler(e:Event):void {
        urlStream.close();
        if(e.type == Event.OPEN){
            trace("FILE EXISTS");
        } else if(e.type == IOErrorEvent.IO_ERROR){
            trace("FILE DOES NOT EXIST");
        }
    }
    
        3
  •  1
  •   Justin Ohms    10 年前

    我开发了一个实用程序类来处理文件是否存在的检查。代码如下: https://github.com/eladelrom/eladlib/blob/master/EladLibFlex/src/com/elad/framework/utils/FileExistsUtil.as

    实现过程如下:

    var fileExists:FileExistsUtil = new FileExistsUtil();
    fileExists.checkFile("file.jpg", 
    function(eventType:String):void
    {
     trace(eventType);
    }, 
    function(errorType:String, text:String):void
    {
     trace(errorType+": "+text);
    });