如何在闪亮的仪表板中访问function.R文件中的selectInput值

时间:2016-10-22 04:15:27

标签: shiny

我正在开发一个闪亮的应用程序,用户上传一个csv文件,并在操作按钮单击事件文件将被推送到mysql数据库。我使用的是3个文件ui.R,server.Rfunction.R

这是我的ui.R文件,似乎是

tabItem("chooseFile",
          fluidRow(
            box(
              width = 5, status = "info",solidHeader = TRUE,
              title = "Send Emails",
              helpText(tags$b("Please uplaod .csv or .tsv file")),
              tags$hr(),
              fileInput('csv_file', 'Choose file to upload',
                        accept = c(
                          'text/csv',
                          'text/comma-separated-values',
                          'text/tab-separated-values',
                          'text/plain',
                          '.csv',
                          '.tsv'
                        )
              ),
              tags$hr(),
              checkboxInput('header', 'Header', TRUE),
              radioButtons('sep', 'Separator',
                           c(Comma=',',
                             Semicolon=';',
                             Tab='\t'),
                           ','),
              actionButton("upload_file", tags$b("Upload File"))


              )
            )
          ),

这是我的server.R文件

 observeEvent(input$upload_file, {
     csv <- input$csv_file
     saveData(csv)
     session$sendCustomMessage(type ='testmessage',
                               message = paste0("File has been successfully uploaded to database"))

   })

以下是我的saveData()函数,它位于function.R文件

saveData <- function(data) {
    # Connect to the database
    db <- dbConnect(MySQL(), dbname = databaseName, host = options()$mysql$host, 
              port = options()$mysql$port, user = options()$mysql$user, 
              password = options()$mysql$password)
    # Construct the update query by looping over the data fields
    dbWriteTable(db, table, input$csv, overwrite = TRUE)

    dbDisconnect(db)

    return(final_data)
  }

input$csv是我想要在数据库中上传的文件,但是当我运行此代码时,它会给我以下错误。

Error in dbWriteTable(db, table, input$csv_file, overwrite = TRUE) : 
object 'input' not found

如何从ui.R文件中的function.R文件中访问输入变量?

1 个答案:

答案 0 :(得分:1)

我终于可以使用以下代码来完成。

data <- reactive({
inFile <- input$csv_file 
if (is.null(inFile)){
  return(NULL)}
data <- read.csv(inFile$datapath, header = input$header, sep = input$sep, encoding = 'UTF-8')
data

})

我可以使用data()

全局访问它