2017-02-13 3 views
4

У меня возникла проблема с downloadHandler() in Shiny:
Если я хочу загрузить любой файл с помощью этой функции, имя файла в окне загрузки будет таким же, как имя output-variable (в примере: «downloadData»), но не так, как указано в «filename =» в downloadHandler() (который должен быть «data-2017-02-13.csv»).downloadButton/downloadHandler не распознает аргумент имени файла

Обратите внимание, что приведенный ниже пример представлен на странице загрузкиHandler() - так что я думаю, что существует общая проблема с R или RStudio, в которой я пишу сценарии R.
Кроме того, когда я открываю блестящее приложение в веб-браузере, проблема исчезает.
Это частично решает его, но мне все равно хотелось бы знать, почему блеск ведет себя по-другому внутри RStudio и веб-браузера.

## Only run examples in interactive R sessions 
if (interactive()) { 

ui <- fluidPage(
    downloadLink("downloadData", "Download") 
) 

server <- function(input, output) { 
    # Our dataset 
    data <- mtcars 

    output$downloadData <- downloadHandler(
    filename = function() { 
     paste("data-", Sys.Date(), ".csv", sep="") 
    }, 
    content = function(file) { 
     write.csv(data, file) 
    } 
) 
} 

shinyApp(ui, server) 
} 

и здесь окно загрузки я получаю: enter image description here

+3

Это только в превью или также в браузере? попробуйте 'runApp (shinyApp (ui, server), launch.browser = TRUE)' – BigDataScientist

+0

Это зависит от браузера. – Carl

+0

У меня такая же проблема. Я включил кнопку загрузки в приложение и задался вопросом, почему она будет использовать имя выходной переменной. В браузере он работает. Другое, что не работает в RStudio, заключается в том, чтобы заставить тип содержимого выходного файла с помощью аргумента contentType в downloadHandler. Вам нужно открыть приложение в хроме для его работы. Возможно, оба различия имеют сходную причину. – Calbers

ответ

2

Я была такая же проблема, когда я использовал окно предварительного просмотра RStudio и был в состоянии решить эту проблему, всегда открывая браузер с помощью команды

runApp(launch.browser = TRUE)

Смежные вопросы