#r #shiny
#r #блестящий
Вопрос:
Я запускаю блестящее приложение, которое генерирует некоторые файлы и сохраняет их в каталоге в расположении файлового сервера. После создания файла я хочу работать с файлами в интерактивном режиме с другими приложениями.
Это должно работать примерно так:
- /srv/shiny-server/myapp/app.R работает на http://localhost/myapp
- Посетите http://localhost/myapp и нажмите кнопку «открыть / домой/».
- Открыто окно файлового браузера для /home/ или новой вкладки в интернет-браузере (например, Firefox, Chrome).
Я пробовал:
actionButton
сonclick="window.open('file:///home/<username>', '_blank')"
=> сбой из-за функции безопасности веб-браузера)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> не работает.