Создать отчет из блестящего приложения с уценкой: файл не найден - PullRequest
0 голосов
/ 01 апреля 2019

Я хочу сгенерировать отчет в формате PDF из моего блестящего приложения на блестящем сервере.Это хорошо работает на моем компьютере.Я пытаюсь вставить на свой блестящий сервер, но когда я хочу сгенерировать отчет, я получаю страницу Firefox «файл не найден» вместо того, чтобы получить pdf.

Я использую код, показанный по адресу: https://shiny.rstudio.com/articles/generating-reports.html Я также пытаюсь напрямую использовать мой файл .Rmd вместо копирования / вставки его в временный каталог, но я получил ту же ошибку.

Файл моего сервера:

output$pdfGen <- downloadHandler(
    # For PDF output, change this to "report.pdf"
    filename = "rapport_preci.pdf",
    content = function(file) {
      withProgress(message = "Génération du pdf en cours", value = 0,{
        src <- normalizePath('report.Rmd')

        # temporarily switch to the temp dir, in case you do not have write
        # permission to the current working directory
        owd <- setwd(tempdir())
        on.exit(setwd(owd))
        file.copy(src, 'report.Rmd', overwrite = TRUE)

      # Set up parameters to pass to Rmd document
      params <- list(varSite = input$pdfSite,
                     ...
                     varTrans= input$valTrans1
                     )

      # Knit the document, passing in the `params` list, and eval it in a
      # child of the global environment (this isolates the code in the document
      # from the code in this app).
      out <- render("report.Rmd", output_file = file,
                        params = params,
                        encoding = "UTF-8"
      )
      file.rename(out, file)
      })
    }
  )

Я думаю, что мое приложение не нашло мой файл .Rmd, но как мне это исправить?Все мои файлы находятся в одной папке.

1 Ответ

0 голосов
/ 01 апреля 2019

Я просто запускаю часть кода, и, очевидно, проблема в том, что вы устанавливаете owd <- setwd(tempdir()) Вот что это делает:

> tempdir()
[1] "/tmp/RtmpKafhlt"
> owd = setwd(tempdir())
> owd
[1] "/home/med"

, и вы, вероятно, не имеете доступа к домашнему каталогухост-сервер.Вам нужно установить заменить on.exit(setwd(owd)) на on.exit(owd)

...