Открытие ссылки webdav с правильной программой на клиенте

У нас есть приложение на основе браузера, которое объединяет сервер webdav. Мы генерируем URL-адреса для определенных документов на нашем (webdav) сервлете. (https://server.com/webdav/path/to/file.doc)

То, что мы ищем, - это хороший способ для наших клиентов открывать эти ссылки прямо в соответствующей программе. I.E. для пользователя Windows "https://server.com/webdav/path/to/excelfile.xls" должен открываться в MS Excel, а та же ссылка должна открывать OOCalc в Linux.

До сих пор мы использовали небольшой апплет, который отображает расширения, ОС и программы и открывает программу через Runtime.getRuntime().exec(..). Этот подход работает в некоторой степени нормально в Ms-Windows, но проблематичен для клиентов Linux и Mac, а также является довольно негибким.

Есть ли лучший способ сделать это?

Может быть полезен javascript, найденный в моем ответе на этот вопрос stackoverflow.com/questions/6792960/…, вместе с комментарием к нему. По сути, клиент решает, что делать с файлом. К сожалению, я не могу вам помочь в вопросах Linux / Mac.

Brendan Hannemann 12.08.2011 21:50
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
1
4 057
4

Ответы 4

Разве не для этого был разработан класс java.awt.Desktop?

Я говорю «Создан для», потому что есть много вещей, которые он не выполняет хорошо или неправильно, но он действительно работает для некоторых вещей. Отсутствует опция «открыть с помощью», например, операционная система должна запрашивать у вас, с чем вы должны открыть документ, если для этого ничего не зарегистрировано.

Он может интерпретировать URL-адрес как веб-адрес, открыть браузер, а затем браузер может делегировать открытие файла? в этом случае вам нужно будет загрузить документ во временный файл, а затем использовать desktop.open?

Java.awt.Desktop, к сожалению, не помог. это вызывает исключения в апплете из-за того, что «файл» не найден. также я бы сомневался, что он откроет правильную программу, учитывая использование WebDav. HTTP (S). Файл temp также не является вариантом, потому что это может помешать процессу сохранения (мы хотим, чтобы наши клиенты редактировали эти документы «напрямую» на наших серверах).
pvgoddijn 20.11.2008 12:06

Если вы установите для MIME-типов файлов правильный формат, все браузеры смогут их обрабатывать. Затем пользователь может выбрать действие по умолчанию для этого типа (открыть acrobat, word, excel, блокнот) или выбрать другое.

К сожалению, апплет - пока единственное решение. Но в редких случаях мы используем плагины "SharePoint.OpenDocuments" и 'application/x-sharepoint'. Можете сравнить со своим решением здесь.

В наши дни он отлично работает в Internet Explorer 10/11. Но вам нужно будет добавить раздел реестра, чтобы позволить Office открывать документы, переданные из браузера, для чтения и записи. Ключ реестра выглядит следующим образом:

Office 2013:

HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Common\Internet\OpenDocumentsReadWriteWhileBrowsing = 0x1 (DWORD)

Office 2010:

HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\Internet\OpenDocumentsReadWriteWhileBrowsing = 0x1 (DWORD)

См. Эту статью для получения информации о настройке ключа: http://social.technet.microsoft.com/Forums/office/en-US/06fedd90-4889-45ca-949d-60b76d74dd15/ms-word-open-document-readonly-with-WebDAV

интересно услышать, знаете ли вы, что это кроссбраузер? (в наши дни большинство пользователей работают с Chrome)

pvgoddijn 28.10.2013 18:05

@pvgoddijn Из коробки нет. то есть Firefox загружается на локальный диск, а затем отключает его, поэтому офис даже не видит URL-адрес WEBDAV. Однако если вы настроите локальный URI, аналогичный SharePoint Designer, он будет работать со всеми браузерами.

Brain2000 28.10.2013 22:55

спасибо за информацию (однако это не вариант, потому что мы не можем разрешить сохранение этих документов во временной папке из-за проблем с безопасностью). Это может быть полезно для других, хотя

pvgoddijn 29.10.2013 12:59

Другие вопросы по теме