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);
}
2 回答
上传文件夹相当容易 . 使用drop事件检测到drop时,会提供删除的文件列表 . 然后,您可以确定删除的文件是否是文件夹,如果是,则可以获取其下列出的所有文件(包括文件),如果其中任何文件是文件夹,则进一步向下递归 .
基本上,adobe air将文件和文件夹视为同一个对象 .
在drop事件中
然后,您可以根据需要通过将文件和文件添加到服务器的对象进行递归
这是完整的例子 . 只需在应用程序初始化时调用onInit()方法即可 .