Shiny App中的文件夹选择(本地和服务器上)以读取文件并保存结果
Posted
技术标签:
【中文标题】Shiny App中的文件夹选择(本地和服务器上)以读取文件并保存结果【英文标题】:Folder selection in Shiny App (locally and on the server) to read the files and save results 【发布时间】:2019-08-09 07:30:01 【问题描述】:我正在尝试使用here 提出的解决方案。 不同之处在于我希望用户选择两个文件夹,一个用于保存我的代码的结果,一个包含所有文件。 现在的问题是如何将文件保存在第二个文件夹(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>")
)
)
还有我的 server.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
)
)
)
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:这里有两个选项:
选项 1
如果您只想在服务器端选择一个文件夹(如果您的应用在本地运行,则可以是本地系统),您可以使用ShinyFiles。
选项 2
如果您的应用程序在服务器中运行,那么您不可能将数据从 Shiny 应用程序写入本地目录。这种情况下的解决方案是将结果保存在服务器中,稍后允许用户使用downloadHandler函数下载。
【讨论】:
在这种情况下,您可以使用选项 2。 感谢 Geovany 我找到了一种方法。我有多个情节,所以不知道如何使用 downloadHandler。以上是关于Shiny App中的文件夹选择(本地和服务器上)以读取文件并保存结果的主要内容,如果未能解决你的问题,请参考以下文章