在 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)上的新标签页打开了文件浏览器窗口。

我试过了:

    actionButtononclick="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 浏览器选项卡或文件浏览器窗口中打开服务器端目录?的主要内容,如果未能解决你的问题,请参考以下文章

使用 CodeceptJS 时如何打开新选项卡或窗口

浏览器如何暂停/更改JavaScript时选项卡或窗口未激活?

在 Xcode 11 中,如何在新选项卡或新窗口中快速打开文件?

如何在新选项卡或窗口中打开 PDF 文件而不是下载它(使用 asp.net)?

如果音频正在另一个选项卡或窗口中播放,如何关闭声音

如何异步处理 WCF 的传入调用?