Похоже, что проблема вызвана заданной кодировкой c, которую shinyapps.io не распознает. Функция fileInput()
пытается сразу прочитать содержимое файла, чтобы обернуть его в data.frame
с предопределенной структурой, и завершается неудачно, когда предоставляется неизвестная кодировка или поврежденный файл. С другой стороны, shinyapps.io имеет ограниченные возможности для настройки среды и кодирования.
Итак, вместо этого я бы предложил альтернативный способ чтения файлов с функцией readLines()
. В приведенном ниже примере пользователь должен предоставить URL, который затем читается в реактивную переменную. Переменная затем может быть проанализирована или обработана. Тестовый URL из вашего примера не вызывает ошибок.
library(shiny)
ui <- shiny::fluidPage(
fileInput("file", "Upload file"), # FileInput (1)
textOutput("content1"), # Text fragment (1)
textInput("url", label = "Provide URL"), # URL input (2)
actionButton("download", label = "Read file"),
textOutput("content2") # Text fragment (2)
)
server <- function(input, output) {
reactive_val <- reactiveValues()
# File content
output$content1 <- renderText({
if (is.null(input$file)) return(NULL)
x <- readLines(input$file$datapath, n = 5, skipNul =T)
enc2native(x)
})
# Read URL content
observeEvent(input$download, {
my_file <- input$url
if (is.null(my_file)) return(NULL)
file_content <- readLines(my_file, n = 5, skipNul =T)
reactive_val[["content"]] <- enc2native(file_content)
}, ignoreInit = T)
# URL file content
output$content2 <- renderText({
if (is.null(reactive_val[["content"]])) return(NULL)
reactive_val[["content"]]
})
}
shinyApp(ui, server)