원격 파일 드롭

Adobe AIR 2 이상

URL에서 사용할 수 있는 파일 또는 데이터를 나타내는 파일 프로미스 객체를 만들려면 URLFilePromise 클래스를 사용합니다. FILE_PROMISE_LIST 클립보드 형식을 사용하여 클립보드에 하나 이상의 파일 프로미스 객체를 추가합니다. 다음 예제에서는 http://www.example.com/foo.txt에서 사용할 수 있는 단일 파일을 다운로드하여 bar.txt라는 드롭 위치에 저장합니다. 원격 및 로컬 파일 이름은 일치할 필요가 없습니다.

if( Clipboard.supportsFilePromise ) 
{ 
    var filePromise:URLFilePromise = new URLFilePromise(); 
    filePromise.request = new URLRequest("http://example.com/foo.txt"); 
    filePromise.relativePath = "bar.txt"; 
 
    var fileList:Array = new Array( filePromise ); 
    var clipboard:Clipboard = new Clipboard(); 
    clipboard.setData( ClipboardFormats.FILE_PROMISE_LIST_FORMAT, fileList ); 
    NativeDragManager.doDrag( dragSource, clipboard ); 
}

클립보드에 할당된 배열에 파일 프로미스 객체를 더 추가하여 사용자가 한 번에 두 개 이상의 파일을 드래그하도록 허용할 수 있습니다. 또한 작업에 포함된 파일의 일부 또는 전부가 드롭 위치에 상대적인 하위 폴더에 저장되도록 relativePath 속성에서 하위 디렉토리를 지정할 수도 있습니다.

다음 예제에서는 여러 파일 프로미스를 포함하는 드래그 작업을 시작하는 방법을 보여 줍니다. 이 예제에서 html 페이지 article.html 은 두 개의 연결된 이미지 파일과 함께 클립보드에 하나의 파일 프로미스로 저장됩니다. 이미지는 상대 링크가 유지되도록 images 하위 폴더에 복사됩니다.

if( Clipboard.supportsFilePromise ) 
{     //Create the promise objects 
    var filePromise:URLFilePromise = new URLFilePromise(); 
    filePromise.request = new URLRequest("http://example.com/article.html"); 
    filePromise.relativePath = "article.html"; 
 
    var image1Promise:URLFilePromise = new URLFilePromise(); 
    image1Promise.request = new URLRequest("http://example.com/images/img_1.jpg"); 
    image1Promise.relativePath = "images/img_1.html"; 
    var image2Promise:URLFilePromise = new URLFilePromise(); 
    image2Promise.request = new URLRequest("http://example.com/images/img_2.jpg"); 
    image2Promise.relativePath = "images/img_2.jpg"; 
     
 
    //Put the promise objects onto the clipboard inside an array 
    var fileList:Array = new Array( filePromise, image1Promise, image2Promise ); 
    var clipboard:Clipboard = new Clipboard(); 
    clipboard.setData( ClipboardFormats.FILE_PROMISE_LIST_FORMAT, fileList ); 
    //Start the drag operation 
    NativeDragManager.doDrag( dragSource, clipboard ); 
}