Открытие приложением файла excel с диска по его url

Здравствуйте.
У нас есть сервис бизнес логики, который формирует файл формата, совместимого с ms excel.
Сервис запускается по кнопке из приложения Jmix, сформированный файл записывается на сетевой диск, в приложении возвращается url на этот файл.

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

Открытие файла в excel мы обеспечиваем. Подскажите, как обеспечить переход браузером по указанному url из приложения jmix.

Если вы хотите открыть файл в окне jmix приложения то используйте browserFrame.
Пример

Если вы хотите открыть url в новой вкладке браузера (не в jmix приложении) то можно сделать так
Page.getCurrent().open(url, "_blank")

Спасибо, вариант Page.getCurrent().open(url, “_blank”) работает для ссылок типа http://site/
Но, к сожалению, ссылка (типа file://///server1/path1/file.xlsx) на файл, который лежит на сетевом диске, таким образом не открывается
(причем если просто вставить эту ссылку в браузерную строку, то файл откроется, я проверяла, а вот из jmix почему-то не открывается)

Ссылка просто не открывается? Возможно браузер ее блокирует тк она приходит со стороны сервера.

Как у вас открывается это окно? Мб использование компонента Link :: Документация Jmix исправит ситуацию тк запрос на открытие ссылки придет со стороны клиента?

1 симпатия

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

Добрый день.

Если вы посмотрите в консоль браузера, то увидите что то вроде:

Chrome:
Screenshot 2023-06-06 at 12.11.30

FireFox:
Screenshot 2023-06-06 at 12.13.03

По соображениям безопасности, современные браузеры запрещают открывать файлы, если это не было инициировано пользователем. В данном случае, файл пытается открыть приложение, а не пользователь.

С уважением,
Глеб