我正在开发一个闪亮的应用程序,用户上传一个csv文件,并在操作按钮单击事件文件将被推送到mysql数据库。我使用的是3个文件ui.R,server.R
和function.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
文件中访问输入变量?
答案 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()