我正在使用 valuems fileuploader 使用 jQuery 在我的应用程序中实现拖放功能。该功能运行顺利,直到其中一位用户尝试以下操作。
用户收到一封带有附件的电子邮件。他试图将附件直接从电子邮件客户端 (Outlook) 拖放到浏览器和放置区域中。上传失败。但是当他将文件保存到他的文件系统中,然后拖放文件时,上传成功。
当用户直接从电子邮件中拖动附件时,谁能告诉我在后台会发生什么?它是否将文件保存在临时位置?如果是这样,那么为什么上传失败?
我正在使用 valuems fileuploader 使用 jQuery 在我的应用程序中实现拖放功能。该功能运行顺利,直到其中一位用户尝试以下操作。
用户收到一封带有附件的电子邮件。他试图将附件直接从电子邮件客户端 (Outlook) 拖放到浏览器和放置区域中。上传失败。但是当他将文件保存到他的文件系统中,然后拖放文件时,上传成功。
当用户直接从电子邮件中拖动附件时,谁能告诉我在后台会发生什么?它是否将文件保存在临时位置?如果是这样,那么为什么上传失败?
大多数浏览器只期待实际的文件拖放格式 ( CF_HDROP
),但是当从 Outlook 拖动时,文件系统上没有文件。你得到的是CF_FILEDESCRIPTOR
和CF_FILECONTENTS
格式。我所知道的任何浏览器(甚至 IE 都不知道)知道如何处理它。
我为您的拖放问题找到了一个免费的解决方案: https ://tonyfederer.github.io/OutlookFileDrag/
从网站:
当您尝试从 Outlook 拖放时,Outlook 会正确地将格式识别为虚拟文件 (CFSTR_FILEDESCRIPTORW),因为这些文件不直接存在于磁盘上。相反,它们包含在 PST 文件、OST 文件或 Exchange 服务器上。
但是,许多应用程序不支持,例如 Web 浏览器和大多数 .NET/Java 应用程序。
要解决此问题,Outlook File Drag 挂钩 Outlook 拖放过程并添加对物理文件 (CF_HDROP) 的支持。当应用程序请求物理文件时,这些文件将保存到临时文件夹中。
我查看了https://outlook2web.com/和https://www.wilutions.info/ddaddin-download.html
但是免费的很好用,而且它是开源的!
2020 年 6 月更新:Chrome 和 Edge 现在可以与最新的 Outlook 交互,但 FireFox 仍然有一个开放的票:https ://bugzilla.mozilla.org/show_bug.cgi?id=580928
FWIW 从客户端拖动到浏览器现在可以与 Microsoft Edge 和 Outlook 配合使用。
使用 Outlook 2016 和 Edge 42.17134.1.0 测试