открыть каталог на стороне сервера на вкладке веб-браузера или в окне файлового браузера?

#r #shiny

#r #блестящий

Вопрос:

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

Это должно работать примерно так:

  1. /srv/shiny-server/myapp/app.R работает на http://localhost/myapp
  2. Посетите http://localhost/myapp и нажмите кнопку «открыть / домой/».
  3. Открыто окно файлового браузера для /home/ или новой вкладки в интернет-браузере (например, Firefox, Chrome).

Я пробовал:

  1. actionButton с onclick="window.open('file:///home/<username>', '_blank')" => сбой из-за функции безопасности веб-браузера)
  2. system('firefox file://...') сбой с Error: no DISPLAY environment variable specified

Возможным третьим вариантом является сохранение файлов /srv/shiny-server/myapp/www и создание ссылок на них. Но это означает, что мне нужно копировать файлы на сервере. Какой более элегантный способ добиться этого, казалось бы, открыть окно файлового браузера?

Пожалуйста, обратите внимание, что доступ к серверу осуществляется с удаленного рабочего стола, а приложение доступно локально в этом сеансе удаленного рабочего стола. Итак, я хочу избежать использования «кнопки загрузки», если это возможно.

Комментарии:

1. Вы можете использовать addResourcePath , чтобы shiny отправлял ваш файл из его исходного местоположения

Ответ №1:

Вы можете использовать addResourcePath , чтобы shiny отправлял ваш файл из его исходного местоположения

 library(shiny)

ui <- fluidPage(htmlOutput("link"))

server <- function(input, output, session) {
  addResourcePath("res", "/my/folder/containing/my/file")
  output$link = renderUI(HTML('<A HREF="res/file_name">Download</A>'))
}

shinyApp(ui = ui, server = server)
 

Комментарии:

1. Это работает частично: я могу addResourcePath и создавать гиперссылки на каждый отдельный файл. Это не работает с уровнем каталога. Например: <A HREF=»res/»>Каталог вывода</A> не работает.