2009-10-12 110 views
1

請讓我知道如何將一個目錄從windows拖放到Adobe AIR面板上。 該文件夾內有子文件夾。子文件夾有很多文件。 我想拖動父文件夾並放下它,以便整個結構必須上傳。 請幫忙。Adob​​e AIR拖放目錄

回答

1

上傳文件夾相當容易。使用放置事件檢測到放置時,您將獲得提供的放棄文件列表。然後你可以確定它是否是被刪除的文件是一個文件夾,如果是,那麼你可以得到它下面列出的所有文件(包括文件),如果其中任何文件夾是文件夾,則進一步下移。

基本上,土坯空氣將文件和文件夾視爲同一個對象。

在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); 
}