关于此事已经有类似的帖子(例如如何更新闪亮的 fileInput 对象? https://stackoverflow.com/questions/17352086/how-can-i-update-a-shiny-fileinput-object),但我仍然无法弄清楚如何迫使 Shiny 忘记一个值input$file
之后fileInput
使用小部件。
当人们想要触发文件上传时,问题就变得棘手了actionButton
(称为"Submit"
在我的例子中),然后用另一个重置它的值actionButton
("Reset"
here). 当再次单击“提交”按钮时,很明显 input$file 值仍然存在。
我尝试使用一些推荐的解决方案:shinyjs
包装和清爽fileInput
模块与renderUI
/uiOutput
——但还是没有结果。
这是我的代码:
server.R
shinyServer(function(input, output, session) {
values <- reactiveValues(
file = NULL
)
observeEvent(input$submit, {
values$file <- input$file1
})
observeEvent(input$reset, {
values$file <- NULL
output$resettableInput <- renderUI({
fileInput('file1', label = NULL)
})
}, ignoreNULL = F)
output$summary <- renderText({
return(paste('Uploaded file:', values$file$name))
})
})
ui.R
shinyUI(bootstrapPage(
headerPanel('Reset / Submit file input example'),
sidebarPanel(
uiOutput('resettableInput'),
fluidRow(
column(4,
actionButton('reset', 'Reset All')
),
column(4,
actionButton('submit', 'Submit')
)
)
),
mainPanel(
h4('Summary'),
verbatimTextOutput('summary')
)
))
我将不胜感激任何帮助。