Ошибка загрузки, когда пользователь перетаскивает вложение из почтового клиента
Я использую valums fileuploader, используя jQuery для реализации функции перетаскивания в моем приложении. Функционал работал бесперебойно, пока один из пользователей не попробовал следующее.
Пользователь получил электронное письмо с вложением. Он попытался перетащить вложение прямо из почтового клиента (Outlook) в браузер и в область перетаскивания. Загрузка не удалась. Но когда он сохранил файл в своей файловой системе, а затем перетащил файл, загрузка прошла успешно.
Может кто-нибудь сообщить мне, что происходит в фоновом режиме, когда пользователь перетаскивает вложение прямо из электронной почты? Сохраняет ли он файл во временной папке? Если так, то почему загрузка не удалась?
2 ответа
Все браузеры ожидают только фактического формата перетаскивания файла (CF_HDROP
), но при перетаскивании из Outlook в файловой системе нет файла. То, что вы получаете, это CF_FILEDESCRIPTOR
а также CF_FILECONTENTS
форматы. Ни один браузер, о котором я знаю (даже IE), не знает, как с этим справиться.
Я нашел бесплатное решение вашей проблемы перетаскивания: https://tonyfederer.github.io/OutlookFileDrag/
С веб-сайта:
При попытке перетаскивания из Outlook Outlook правильно определяет формат как виртуальные файлы (CFSTR_FILEDESCRIPTORW), поскольку файлы не существуют непосредственно на диске. Вместо этого они содержатся в PST-файле, OST-файле или на сервере Exchange.
Однако многие приложения не поддерживают, такие как веб-браузеры и большинство приложений.NET/ Java.
Чтобы обойти эту проблему, перетаскивание файлов Outlook перехватывает процесс перетаскивания в Outlook и добавляет поддержку физических файлов (CF_HDROP). Когда приложение запрашивает физические файлы, они сохраняются во временную папку.
Я посмотрел на https://outlook2web.com/ и https://www.wilutions.info/ddaddin-download.html
но бесплатный работает отлично, и это с открытым исходным кодом!
Перетаскивание FWIW из клиента в браузер теперь работает с Microsoft Edge и Outlook.
Протестировано с Outlook 2016 и Edge 42.17134.1.0