R Shiny Загрузка файлов из тега ahref, созданного динамически - ошибка Not Found - PullRequest
1 голос
/ 09 января 2020

Попытка создать ссылки для скачивания с помощью якорных тегов в Shiny. В зависимости от количества файлов ссылки создаются динамически, как показано ниже. Но ошибка говорит о том, что файл не найден.

UI

uiOutput("result")

Сервер

  fileslist = strsplit(res,"#")[[1]]  #Sample data "output/file1#output/file2#output/file3"
  tags <- tagList("Files:")
  for (filepath in fileslist){
    tags <- tagList(tags, a("File", target="_blank", href=glue("{filepath}")))
  }
  output$result <- renderUI({
    tags
  })

Он успешно создает в браузере a href ссылок с URL, как показано ниже.

domain:1111/output/file1
domain:1111/output/file2
domain:1111/output/file3

Но при нажатии на ссылку я получаю 404 (Not Found) ошибку. И файлы существуют в каталоге.

Структура каталога приложения

  AppDir-
      ui.R
      server.R
      output-
           file1
           file2
           file3  

Каталог имеет все предоставленные разрешения на чтение.

1 Ответ

2 голосов
/ 09 января 2020

Файлы не передаются из структуры каталогов вашего блестящего проекта. Простой способ - переместить вашу выходную папку в www folder, который автоматически становится доступным для вашего приложения при помощи блестящего.

  AppDir-
      ui.R
      server.R
      www -
         output-
            file1
            file2
            file3 

Тогда ваш href должен работать, используя domain:1111/output/file1 (да нет www, только его содержимое является общим)

Вы также можете поместить в www other файлы, такие как изображения для ваших страниц, CSS файлы или даже javascript файлы


Тем не менее, www is не предназначено для записи в папку. Лучше всего иметь отдельную папку для записи (например, ту, которая у вас уже есть output) и сделать ее доступной для вашего приложения.

Для этого вы можете использовать функцию addResourcePath() Shiny

addResourcePath("output","./output")

и файлы будут доступны через ваш href domain:1111/output/file1

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