【问题标题】:Link files in a folder with Shiny使用 Shiny 链接文件夹中的文件
【发布时间】:2020-01-22 20:16:37
【问题描述】:

我想做的是一个闪亮的应用程序,它显示文件夹中的文件,并允许用户单击它打开/下载。假设我在一个文件夹中有 3 个文件,例如:

file1.txt  file2.bmp  file3.jpg

我想要的是我的应用程序向我显示这些文件并让我单击它们以下载/打开。如果它只有html,那就是

<a href="file1.txt">file1</a><a href="file2.bmp">file2</a><a href="file3.jpg">file3</a>

这必须动态完成,所以当我点击一个按钮时,它会刷新文件夹中的文件列表并让我下载它们。

谢谢!

【问题讨论】:

  • 我添加了一个 JS 标签,因为你很可能需要它来解决这个问题

标签: javascript html r shiny


【解决方案1】:

如果您想要一个文件夹中的文件列表,您可以使用

创建这些文件的列表

yourFiles &lt;- list.files(yourDirectory)

您可以创建一个按钮来刷新您分配到的变量docs here,或者您可以轮询文件夹,以便它在计时器上自动更新。您可以使用reactivePoll()docs here 来做到这一点。这将在应用程序的server &lt;- function(input, output, session) {yourCodeHere} 部分完成。

操作按钮文档包含一个如何执行操作的示例,例如提供 JS 下载链接。

【讨论】:

    【解决方案2】:

    这是一个浏览文件、打开文件并显示其内容的简单程序。

    library(shiny)
    # Define UI
    ui <- pageWithSidebar(
    # App title ----
    headerPanel("Open a File and Show Contents"),
    # Sidebar panel for inputs ----
        sidebarPanel(
        label="Data Source",fileInput("fileName", "File Name")),
    
    # Main panel for displaying outputs ----
    mainPanel(
        textOutput(outputId = "text"))
    )
    
    # Define server logic
    server <- function(input, output) {
    
    inputData <- reactive ({
      if (is.null(input$fileName)) return(NULL)
      inFile <- input$fileName
      conInFile <- file(inFile$datapath,open='read')
      inData <- readLines(conInFile)
      close (conInFile)
      return (inData)
    })
    
    output$text <- renderText ({
      inData <- inputData()
      inData
    })
    }
    
    shinyApp(ui, server)
    

    【讨论】:

      猜你喜欢
      • 2018-02-26
      • 2014-05-28
      • 1970-01-01
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 2010-12-22
      • 2020-06-05
      相关资源
      最近更新 更多