我正在使用<S:nativeDragDrop>
并将文件拖过组件,如下所示:
var arr:Array = event.clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT) as Array;
我不确定如何限制可以拖动哪种类型的文件。这有本机控制吗?帮助文档提到了定义完全不同的ClipboardFormats的可能性,但我不知道如何做到这一点;我也可以在文件名上运行正则表达式,但这似乎过于复杂。
想知道是否有类似FileReference.browse
指定特定文件扩展名的方法
答案 0 :(得分:2)
据我所知,没有内置的方法来过滤掉删除的文件。但是,在NATIVE_DRAG_ENTER处理程序中,您可以循环遍历文件列表,并选择不接受基于其文件类型的拖动。或者,在处理NATIVE_DRAG_DROP时,您只能忽略不支持的类型。
var validTypes:Object = {png : true, jpg : true, gif : true};
function nativeDragEnter(event:NativeDragEvent):void {
var files:Array = event.clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT) as Array
for each(var file:File in files) {
if(!validTypes[file.extension.toLowerCase()]) // Don't accept drag if any of the dropped files aren't supported.
return;
}
DragManager.acceptDrag(InteractiveObject(event.target));
}
function nativeDragDrop(event:NativeDragEvent):void {
var files:Array = event.clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT) as Array
for each(var file:File in files) {
if(validTypes[file.extension]) //accept only certain files
processFile(file);
}
}
作为旁注,我假设您正在使用AIR应用程序,但如果不是,则必须使用FileReference类而不是File。