将桌面文件从剪贴板粘贴到Electron渲染窗口(作为拖放的替代方案)

nqwrtyyt  于 4个月前  发布在  Electron
关注(0)|答案(2)|浏览(102)

预检清单

  • [ x ] 我已阅读了此项目的Contributing Guidelines
  • [ x ] 我同意遵循此项目遵循的Code of Conduct
  • [ x ] 在不成功的情况下,我已在问题跟踪器中搜索了一个与我想要提交的功能请求相匹配的问题。

问题描述

出于可访问性和通用可用性的原因,大多数支持从桌面拖放文件的应用也支持复制粘贴。拖放操作可能对于我们这些没有移动性问题的人来说也是尴尬的。因此,复制粘贴通常是一个更好的用户体验。
Electron通过File Object增强了HTML5 File API,使其能够访问正在拖入渲染窗口的文件的路径。
HTML Clipboard API似乎也受到类似的安全相关问题的影响,这使得无法访问从桌面复制的任何文件指针的粘贴功能。
虽然这对随机网页可能是有意义的,除非我漏掉了什么——桌面应用应该能够访问这些信息。特别是当它是有意粘贴时(例如Command+V)。一些这些问题已经通过Electron的剪贴板API得到了解决。

建议解决方案

因此,我的建议是在Electron clipboard API中添加某种文件支持。类似于clipboard.readFiles(),它将返回一个文件路径数组(以及MIME类型?)。在一个完美的世界里,拖放API和剪贴板API将会非常相似。但我会满足于任何允许用户将文件粘贴到Electron应用程序的方法。

考虑过的替代方案

HTML剪贴板API

其他信息

有关HTML剪贴板API支持的文档,以及尝试操作剪贴板数据并获取有关Chrome(ium)中HTML剪贴板API可以访问的信息,请查看Evercoder Clipboard Inspector,尤其是the live page。比较多文件拖放事件和复制粘贴。在Safari中,您可以获得比Chrome更多的信息,但两者都没有文件路径信息。

oprakyz7

oprakyz72#

@nornagon

嗯...如果$x_{clipboard}$ API(无论是Chromium还是Electron)可以访问文件,那么$x_{File}$对象将会很有帮助。

这是我制作的一个测试Fiddle。我在MacOS上进行测试。还没有在其他平台上测试过。

相关问题