我正在开发一个闪亮的应用程序,当UI中提供了一个URL时,我需要从web获取并下载文件。
在我尝试获取文件并将文件下载到特定位置时,在服务器站点上,应用程序出错。我猜它是因为反应过程。
下面提供了示例代码,请告诉我错误的地方。
服务器端: {
library(shiny)
require(XML)
require(utils)
shinyServer(function(input, output, session) {
dfile <- "~/dest/temp.pdf"
dest <- "~/dest"
url<-input$pdfurl
download.file(url,dfile)
myfiles <- list.files(path = dest, pattern = "pdf", full.names = TRUE)
lapply(myfiles, function(i) system(paste('"D:/pranav/software/xpdf/bin64/pdftotext.exe"', paste0('"', i, '"')), wait = FALSE) )
}
客户方:
{
library(shiny)
row <- function(...) {
tags$div(class="row", ...)
}
col <- function(width, ...) {
tags$div(class=paste0("span", width), ...)
}
shinyUI(fluidPage(
fluidRow(
column(12,style = "background-color:#ADD8C9;",
titlePanel("Document Reader"),
fluidRow(
column(8,style = "background-color:#ADD8C6;",
tags$div(
class = "container",
row(
col(3, textInput("pdfurl", "PDF URL"))
),
row(
col(6, style = "width:600px;",htmlOutput('pdfviewer'))
)
)
),
column(4,style = "background-color:#ADD8C9;",
)
)
)
)
)
)
}
答案 0 :(得分:1)
闪亮的作品通过反应性。您可以在http://shiny.rstudio.com/articles/reactivity-overview.html
上详细了解相关信息如果没有ui-side
,则无法重现您的问题,但您可以尝试这样的事情:
shinyServer(function(input, output, session) {
observeEvent(input$pdfurl, {
download.file(input$pdfurl,dfile)
myfiles <- list.files(path = dest, pattern = "pdf", full.names = TRUE)
lapply(myfiles, function(i) system(paste('"D:/pranav/software/xpdf/bin64/pdftotext.exe"', paste0('"', i, '"')), wait = FALSE) )
})
}