0

我正在尝试使用此处提出的解决方案。不同之处在于我希望用户选择两个文件夹,一个用于保存我的代码的结果,一个包含所有文件。现在的问题是如何将文件保存在第二个文件夹(input$fileout)中。有没有办法将此路径传递给处理我的输入文件的函数?我认为会有一个权限问题。编辑:我想在 my.analysis() 函数中使用 dataHandler,因为我需要保存多个 png、csv 和一些特定格式的文件。最好的方法是什么?我的shinyApp 不打印任何东西,除了分析完成,下载结果。

这是更新的 ui.R

library(shiny)
library(shinythemes) 
library(shinyWidgets)

 shinyUI(tagList(fluidPage(theme = shinytheme("lumen"),
                      includeScript("./www/text.js"),
                      titlePanel("Test"),

                      fluidRow(
                        column(4,

                                  tags$div(class="form-group shiny-
           input-container", 

                         tags$div(tags$label("Choose a
    folder", class="btn btn-primary",
                                                              tags$input(id = "fileIn", webkitdirectory = TRUE, type = "file", style="display: none;", onchange="pressed()"))),
                                          tags$label("No folder choosen", id = "noFile"),
                                          tags$div(id="fileIn_progress", class="progress progress-striped active shiny-file-input-progress",
                                                   tags$div(class="progress-bar")
                                          )     
                                 )),


                                 verbatimTextOutput("tbl")
                        ), 

                       fluidRow(

                         column(8,
                                verbatimTextOutput("results"))

                       )
  ),
   HTML("<script type='text/javascript' src='getFolders.js'>
   </script>")
  )

  )          

还有我的服务器.R

   library(shiny)
library(ggplot2)
library(shinythemes)
library(shinyWidgets)
library(flowCore)
source("myanalysis.R")
options(shiny.maxRequestSize=50*1024^2) 
shinyServer(function(input, output, session) {
  observeEvent(input$go, {
  df <- reactive({
    print(input$fileIn)
    # Below returns NULL, as it does not have any files in it yet.
     print(input$fileout)
    inFiles <- input$fileIn
    if (is.null(inFiles))
      return(NULL)


      my.analysis(fs = tmp,output=input$fileout)

  })
  output$tbl <-renderPrint(
   df()
  )

  output$results = renderPrint({input$mydata
  })

})
})

任何帮助将不胜感激。

4

1 回答 1

1

这里有两个选项:

选项1

如果您只想在服务器端选择一个文件夹(如果您的应用程序在本地运行,则可以是本地系统),您可以使用ShinyFiles

选项 2

如果您的应用程序在服务器中运行,那么您不可能将数据从 Shiny 应用程序写入本地目录。这种情况下的解决方案是将结果保存在服务器中,然后允许用户使用downloadHandler函数下载它。

于 2019-03-18T21:28:07.673 回答