2017-02-20 3 views
0

私はクライアントからサーバーにメッセージを送信するShiny.onInputChangeでダウンロードリンクを実装しています。サーバーはメッセージを使用して新しいファイルを生成し、ユーザーにダウンロードを提供します。 downloadHandlerは、サーバーからファイルをダウンロードするためのボタンを作成できますが、クライアントからのメッセージは受信できません。Shiny.onInputChangeのファイルをダウンロード

Shiny.onInputChangeは、observeEventで取り込むことができます。

私は、observeEventにダウンロード機能を実装する方法を提案しています。

下記のShiny.onInputChangeのコード例がいくつかあります。ご意見ありがとうございます。

library(shiny) 

ui <- shinyUI(
    fluidPage(
     HTML('<a href="#" onclick=\'Shiny.onInputChange("i_download", [1,Math.random()]);\'>Download</a>') 
    ) 
) 

server <- function(input, output, session) { 
    observeEvent(input$i_download, { 
     rep(input$i_download[1]) 
     # codes to generate a new file and download it 
    }) 
} 


shinyApp(ui = ui, server = server) 
+0

そして、何が問題なのですか? – Jean

答えて

1

downloadHandlerを使用してメッセージを受け取ることができると思います。これはあなたの要求を満たします:

library(shiny) 

ui <- fluidPage(
    downloadLink('down', onclick='Shiny.onInputChange("i_download", [1,Math.random()]);') 
    # for shiny 0.14.2 or lower use this instead: 
    # tagAppendAttributes(downloadLink('down'), onclick='Shiny.onInputChange("i_download", [1,Math.random()]);') 
) 

server <- function(input, output, session) { 

    output$down <- downloadHandler(

    filename = 'down.txt', 

    content = function(file) { 

     # use the message (input$i_download) to generate a new file 

     writeLines(as.character(input$i_download), file) 

    } 
) 
} 

shinyApp(ui = ui, server = server) 
+0

これは次のように再現できません: '未使用の引数(onclick =" Shiny.onInputChange(\ "i_download \"、[1、Math.random()]); ")。 – BigDataScientist

+0

@BigDataScientist私は光沢のある1.0.0を使用しています。それは 'downloadLink()'と 'downloadButton'に' ... '引数を追加しました – Yang

+0

ああ、私はパッケージで最新のものではありませんでした。私はdownloadLinkのためにそれを知っていなかったonclickの議論を知っていました。ありがとう@ヤン! – BigDataScientist