我对R和R Shiny还是很陌生,只是学习而已。我撞到了砖墙。 我想构建一个允许用户上传图像的应用程序(保存在计算机本地)。上传的图像需要动态显示在mainpanel()中。
我已经使用fileInput()
来让用户在ui中上传图像。
在服务器部分,我使用observeEvent()
完成上载,并使用renderUI()
进行显示。但这没有用。
它显示Error:RAW()
只能应用于“原始”,而不能应用于“字符”。
ui <- fluidPage
(sidebarLayout(
sidebarPanel(
fluidRow(
fileInput("myFile", "Choose a file", accept = c('image/png', 'image/jpeg'))
)
),
mainPanel(
uiOutput("images")
),
)
)
server <- function(input, output) {
observeEvent(input$myFile, {
inFile <- input$myFile
if (is.null(inFile))
return()
file.copy(inFile$datapath,file.path("/Users/rohith/Desktop/PROJECTS AND WORK FILES/trial&error/coommoninlist/images", inFile$name) )
})
output$images <- renderUI({
b64 <- list() #to do base64 encoding
for (i in list.files()) {
name <- paste('image:', i, sep = '')
tmp <- base64enc::dataURI(file = i, mime = "image/png")
b64[[name]] <- tmp
}
a64 <- list()
for (j in (1:length(b64))) {
name_1 <- paste('img:', j, sep = '')
tmp_1 <- img(src = b64[j],
width = 250,
height = 250)
a64[[name_1]] <- tmp_1
}
a64
# Output list of images
})
}
shinyApp(ui = ui, server = server)