首页 文章

Adobe AIR拖放目录

提问于
浏览
1

请让我知道如何将目录从Windows拖放到Adobe AIR面板上 . 该文件夹里面有子文件夹 . 子文件夹有很多文件 . 我想拖动父文件夹并将其删除,以便整个结构必须上传 . 请帮忙 .

2 回答

  • 1

    上传文件夹相当容易 . 使用drop事件检测到drop时,会提供删除的文件列表 . 然后,您可以确定删除的文件是否是文件夹,如果是,则可以获取其下列出的所有文件(包括文件),如果其中任何文件是文件夹,则进一步向下递归 .

    基本上,adobe air将文件和文件夹视为同一个对象 .

    在drop事件中

    var files = event.dataTransfer.getData( "application/x-vnd.adobe.air.file-list" );
    
        var fileData = [];
        for (var f = 0; f < files.length; f++)
        {
            if (files[f].isDirectory) {
                    //process this folder recursing through subfolders
            } else {
                    //we have a file
            }
        }
    

    然后,您可以根据需要通过将文件和文件添加到服务器的对象进行递归

  • 0

    这是完整的例子 . 只需在应用程序初始化时调用onInit()方法即可 .

    private function onInit(event:FlexEvent):void
    {
        this.addEventListener(NativeDragEvent.NATIVE_DRAG_ENTER, onDragIn);
        this.addEventListener(NativeDragEvent.NATIVE_DRAG_DROP, onDrop);
    }
    
    private function onDragIn(event : NativeDragEvent):void
    {
        NativeDragManager.acceptDragDrop(this);
    }
    
    private function onDrop(event : NativeDragEvent):void
    {
        try
        {
            var dropfiles:Array = event.clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT) as Array;
            processDroppedFiles(dropfiles);
        }
        catch (error : IOError)
        {
            trace("Error during drag-and-drop procedure.");
        }
    }
    
    private function processDroppedFiles(files : Array):void
    {
        for each (var file:File in files)
        {
            if (file.isDirectory)
            {
                processDirectory(file);
            }
            else
            {
                processFile(file);
            }
        }
    }
    
    private function processDirectory(dir : File):void
    {
        processDroppedFiles(dir.getDirectoryListing());
    }
    
    private function processFile(file:File):void
    {
        trace(file);
    }
    

相关问题