在 Web 浏览器选项卡或文件浏览器窗口中打开服务器端目录?
Posted
技术标签:
【中文标题】在 Web 浏览器选项卡或文件浏览器窗口中打开服务器端目录?【英文标题】:open a server side directory in a web browser tab or file browser window? 【发布时间】:2021-03-04 05:38:04 【问题描述】:我正在运行一个闪亮的应用程序,它会生成一些文件并将它们保存在文件服务器位置的目录中。生成文件后,我想与其他应用程序交互地处理文件。
它应该像这样工作:
-
/srv/shiny-server/myapp/app.R 在 http://localhost/myapp 上运行
访问 http://localhost/myapp 并单击“打开/home/”按钮
为 /home/ 或 Internet 浏览器(即 Firefox、Chrome)上的新标签页打开了文件浏览器窗口。
我试过了:
actionButton
和 onclick="window.open('file:///home/<username>', '_blank')"
=> 由于网络浏览器的安全功能而失败)
system('firefox file://...')
失败,Error: no DISPLAY environment variable specified
第三种可能的选择是将文件保存到/srv/shiny-server/myapp/www
并创建指向该文件的链接。但这意味着我必须在服务器上复制文件。实现这个看似打开文件浏览器窗口的更优雅的方法是什么?
请注意,服务器是由远程桌面访问的,而应用程序是在该远程桌面会话中本地访问的。所以,如果可能的话,我想避免使用“下载按钮”。
【问题讨论】:
您可以使用addResourcePath
让闪亮的文件从其原始位置提供服务
【参考方案1】:
您可以使用 addResourcePath
让闪亮的文件从其原始位置提供服务
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)
【讨论】:
这部分工作:我可以添加资源路径并为每个文件创建超链接。它不适用于目录级别。例如:输出目录 不起作用。以上是关于在 Web 浏览器选项卡或文件浏览器窗口中打开服务器端目录?的主要内容,如果未能解决你的问题,请参考以下文章
浏览器如何暂停/更改JavaScript时选项卡或窗口未激活?
在 Xcode 11 中,如何在新选项卡或新窗口中快速打开文件?