Почему мой Shiny iframe говорит мне «localhost не отправлял никаких данных» при попытке отобразить локальный PDF? - PullRequest
0 голосов
/ 17 февраля 2020

Намерение:

Я пытаюсь создать блестящее приложение, которое содержит просмотрщик PDF. Я стараюсь изо всех сил повторить этот пример:

отображение PDF-файла с локального диска в блестящем

Проблема:

В следующем примере Я загружаю фиктивный файл PDF в каталог 'www' в том же root, что и в App.R.

Насколько я понимаю, протоколы http, присущие приложениям Shiny, требуют от меня установки источник для iframe как "http://localhost/test.pdf", в отличие от "www/test.pdf". Но когда я запускаю этот код, я получаю iframe только с этим:

Я также следовал дополнительному совету в ранее упомянутом SO thread - запуск приложения с помощью кнопки «Запустить приложение» в RStudio вместо Ctrl + возврата через код. Нет успеха Кто-нибудь знает, как я могу сделать эту работу?

Представляет:

require(shiny)
#> Loading required package: shiny

ui = fluidPage(
  htmlOutput("pdfViewer")
)

server = function(input, output, session) {
  ### Libraries
  require(pdftools)

  ### Create 'www' dir (understand that this
  ### is where 'localhost' stuff is kept?)
  suppressWarnings(dir.create("www"))

  ### Make a test pdf file using the w3 dummy pdf
  pdf = "www/test.pdf"
  download.file(url = "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf",
                       destfile = pdf)

  ### Define the http: address for the pdf
  pdfHttp = "http://localhost/test.pdf"

  output$pdfViewer = 
    renderText({
      ### Copied this from here: "https://stackoverflow.com/a/21024943/11149547"
      return(paste('<iframe style="height:600px; width:100%" src="', pdfHttp, '"></iframe>', sep = ""))
    })
}

shinyApp(ui = ui, server = server)

Приложение (данные версии R)

> R.version
               _                           
platform       x86_64-w64-mingw32          
arch           x86_64                      
os             mingw32                     
system         x86_64, mingw32             
status                                     
major          3                           
minor          6.1                         
year           2019                        
month          07                          
day            05                          
svn rev        76782                       
language       R                           
version.string R version 3.6.1 (2019-07-05)
nickname       Action of the Toes

1 Ответ

0 голосов
/ 18 февраля 2020

Мне нужно было добавить порт к локальному адресу хоста.

Я узнал, что http://localhost является синонимом http://127.0.0.1. Затем я заметил, что когда мое приложение Shiny запускалось в браузере, в омнибоксе был указан адрес: 127.0.0.1:5056.

Я заменил http://localhost/test.pdf в приведенном выше коде на http://127.0.0.1:6056/test.pdf, и теперь файл PDF загружается.

Я думаю, это связано с тем, что я использую свой рабочий компьютер, который часть локальной сети какой-то.

Редактировать:

Кроме того, вы можете явно указать порт моего запуска options(shiny.port = 6056) перед запуском runApp(server = server, ui = ui). В конце концов мне нужно было это сделать, потому что другое мое приложение Shiny (не предопределяющее) было запущено в другой порт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...