The best way to start a File-Drag for now, is the downloadURL as i know.

Like here in Nylas N1:
https://github.com/nylas/N1/blob/master/internal_packages/attachments/lib/attachment-component.cjsx#L67

But only Images and PDFs are able to Drop direct on an Application (MAC). Other file formats just can be copied to Folders.
I think I'm not the only one who is looking for a full native file drop and I think chromium offers that already.

On chrome://downloads/ its possible to Drag any File on an Application (Mac).

Is there maybe a way to access this Drag Function in electron or can it become a part of?
Multi File Drag would be very nice too! :)

[chrome://downloads/ > js dragstart > chrome.send('drag', id)](https://code.google.com/p/chromium/codesearch#chromium/src/chrome/browser/resources/md_downloads/crisper.js&q=crisper.js&sq=package:chromium&type=cs&l=15751)

I have no knowledge, about cc++ but it found that... :D
[drag_download_item_views.cc](https://code.google.com/p/chromium/codesearch#chromium/src/chrome/browser/download/drag_download_item_views.cc&q=DragDownloadItem&sq=package:chromium&dr=CSs&l=31)
[md_downloads_dom_handler.cc](https://chromium.googlesource.com/chromium/src.git/+/master/chrome/browser/ui/webui/md_downloads/md_downloads_dom_handler.cc)

atom/browser/api/atom_api_web_contents.cc
.SetMethod("_goToOffset", &WebContents::GoToOffset)
      .SetMethod("isCrashed", &WebContents::IsCrashed)
      .SetMethod("setUserAgent", &WebContents::SetUserAgent)
      .SetMethod("getUserAgent", &WebContents::GetUserAgent)
      .SetMethod("insertCSS", &WebContents::InsertCSS)
      .SetMethod("savePage", &WebContents::SavePage)
      .SetMethod("openDevTools", &WebContents::OpenDevTools)
      .SetMethod("closeDevTools", &WebContents::CloseDevTools)
      .SetMethod("isDevToolsOpened", &WebContents::IsDevToolsOpened)
      .SetMethod("isDevToolsFocused", &WebContents::IsDevToolsFocused)
      .SetMethod("enableDeviceEmulation",
                 &WebContents::EnableDeviceEmulation)
      .SetMethod("disableDeviceEmulation",
                 &WebContents::DisableDeviceEmulation)
      .SetMethod("toggleDevTools", &WebContents::ToggleDevTools)
      .SetMethod("inspectElement", &WebContents::InspectElement)
      .SetMethod("setAudioMuted", &WebContents::SetAudioMuted)
      .SetMethod("isAudioMuted", &WebContents::IsAudioMuted)
      .SetMethod("undo", &WebContents::Undo)
      .SetMethod("redo", &WebContents::Redo)
      .SetMethod("cut", &WebContents::Cut)
      .SetMethod("copy", &WebContents::Copy)
      .SetMethod("paste", &WebContents::Paste)
      .SetMethod("pasteAndMatchStyle", &WebContents::PasteAndMatchStyle)
      .SetMethod("delete", &WebContents::Delete)
      .SetMethod("selectAll", &WebContents::SelectAll)
      .SetMethod("unselect", &WebContents::Unselect)
      .SetMethod("replace", &WebContents::Replace)
      .SetMethod("replaceMisspelling", &WebContents::ReplaceMisspelling)
      .SetMethod("findInPage", &WebContents::FindInPage)