上传并查看R闪亮的pdf

时间:2017-11-20 15:27:30

标签: r pdf shiny

我在R中有一个简单的闪亮应用程序,用于从用户读取PDF文件并显示它。我似乎无法让它发挥作用。在www目录中闪亮的服务器上,我看到一个名为“myreport.pdf”的1 KB文件,它只有第一个字符

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)

1 个答案:

答案 0 :(得分:2)

我认为问题在于二进制读写。而是尝试使用file.copy复制文件似乎工作。此外,我还在iframeobserveEvent取得iframe,以便每次在同一会话中上传pdf时更新。

更新代码:

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)