Shinyproxy: Монтирование shinyproxy к файловой системе хоста.

Созданный на 5 янв. 2021  ·  8Комментарии  ·  Источник: openanalytics/shinyproxy

У меня есть блестящее приложение, в котором пользователи могут загружать данные, манипулировать данными в приложении, а затем сохранять обработанные данные в своей локальной файловой системе. Я могу заставить это работать локально с помощью shinyproxy, используя

container-volumes: ["/Users:/app_data"]

в application.yml. Это монтирует файловую систему пользователей хоста (/ Users) в контейнер (/ app_data). Однако, когда я развертываю приложение на удаленном сервере, я больше не могу подключаться к файловой системе хоста. Я бы хотел, чтобы пользователь имел возможность сохранять в своей файловой системе. Это возможно? Я безуспешно пробовал альтернативы / Users, например $ {HOME}.

Спасибо.

question

Все 8 Комментарий

да, вы можете сделать это с помощью синтаксиса вроде:

container-volumes: ["/home/#{proxy.userId}:/app_data"]

С использованием:
container-volumes: ["/home/#{proxy.userId}:/app_data"]
по-прежнему приводит к тому, что я не могу получить доступ к файловой системе хоста, когда приложение развернуто на удаленном сервере. Для контекста я использую shinyFileSave в блестящем приложении, и этот код выглядит следующим образом:
roots <- c("Home Directory" = "/app_data")
shinyFileSave(input = input, id = 'save', roots = roots, session = session)
Когда я развертываю свое приложение через удаленный сервер и использую кнопку сохранения файла, я подключаюсь к пустой файловой системе без каких-либо папок вместо моей файловой системы хоста с доступом к моему рабочему столу и т. Д. Я подключаюсь к файловой системе хост-пользователя на удаленном Linux сервер вместо файловой системы на своем рабочем столе? Или, возможно, это проблема с разрешениями. В конце концов, я бы хотел, чтобы пользователь мог сохранить то, что они создали в веб-приложении, на свой рабочий стол. Спасибо!

На случай, если это будет полезно, вот список различных креплений, которые я пробовал. Пока ни один из них не работал:

`container-volumes: ["${HOME}:/app_data"]`
`container-volumes: ["/$pwd:/app_data"]`
`container-volumes: ["$HOME:/app_data"]`
`container-volumes: ["/Users:/app_data"]`
`container-volumes: ["~:/app_data"]`
`container-volumes: ["/home/#{proxy.userId}:/app_data"]`

Могу ли я монтировать файловую систему хост-пользователя на удаленном сервере Linux вместо файловой системы на его рабочем столе?

Да исправить. Если shinyproxy работает на удаленном сервере Linux, хост-системой является тот удаленный сервер, к которому вы можете получить доступ с помощью монтирования томов.

В конце концов, я бы хотел, чтобы пользователь мог сохранить то, что они создали в веб-приложении, на свой рабочий стол.

Разве в этом случае не хватит downloadButton ? (https://shiny.rstudio.com/articles/download.html)

Решение downloadButton и downloadHandler не идеально, но оно будет работать. Я думаю, что это, вероятно, единственное решение, учитывая характер ShinyProxy, и что его невозможно будет установить на рабочий стол компьютера пользователя. Спасибо вам за помощь!

«Файловая система хоста» - это файловая система удаленного сервера. Чего вы хотите добиться, так это сохранить файл в файловой системе клиента? На мой взгляд, это невозможно.

Да, первоначальная цель заключалась в том, чтобы сохранить файл в файловой системе клиента с помощью shinyFileSave но я согласен, что это невозможно.

Привет @ lucius-verus-fan

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

Была ли эта страница полезной?
0 / 5 - 0 рейтинги