2017-11-20 3 views
1

ユーザーからPDFファイルを読み込んで表示するためのシンプルなアプリです。私はそれを働かせるように見えない。 wwwディレクトリで光沢のあるサーバーでは、私はちょうど最初の文字アップロードしてPDFをRで表示するshiny

library(shiny) 

ui <- shinyUI(fluidPage(

    titlePanel("Testing File upload"), 

    sidebarLayout(
    sidebarPanel(
     fileInput('file_input', 'upload file (. pdf format only)', accept = c('.pdf')) 
    ), 

    mainPanel(
     uiOutput("pdfview") 
    ) 
) 
)) 

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

    observe({ 
    req(input$file_input) 
    test_file <- readBin(input$file_input$datapath, what="character") 
    writeBin(test_file, "www/myreport.pdf") 
    }) 


    output$pdfview <- renderUI({ 
    tags$iframe(style="height:600px; width:100%", src="myreport.pdf") 
    }) 

}) 

shinyApp(ui = ui, server = server) 

答えて

0

を持つ名前「myreport.pdf」で1キロバイトのファイルを参照してください私は、問題は、バイナリ読み取りおよび書き込みであると思います。代わりにfile.copyを使ってファイルをコピーしようとするとうまくいくようです。また、同じセッションでpdfがアップロードされるたびにiframeが更新されるようにiframeobserveEventに入れました。

更新されたコード:

library(shiny) 

ui <- shinyUI(fluidPage(

    titlePanel("Testing File upload"), 

    sidebarLayout(
    sidebarPanel(
     fileInput('file_input', 'upload file (. pdf format only)', accept = c('.pdf')) 
    ), 

    mainPanel(
     uiOutput("pdfview") 
    ) 
) 
)) 

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

    observe({ 
    req(input$file_input) 

    #test_file <- readBin(input$file_input$datapath, what="raw") 

    #writeBin(test_file, "myreport.pdf") 

    #cat(input$file_input$datapath) 

    file.copy(input$file_input$datapath,"www", overwrite = T) 



    output$pdfview <- renderUI({ 
    tags$iframe(style="height:600px; width:100%", src="0.pdf") 
    }) 

    }) 

}) 

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

すごいです!ありがとう。これはうまくいった。 –

+0

@VishalVermaこれが完了した場合、upvoteとマーク答えをマークしてください!どうも – amrrs

関連する問題