У меня есть блестящее приложение, в котором пользователи могут загружать данные, манипулировать данными в приложении, а затем сохранять обработанные данные в своей локальной файловой системе. Я могу заставить это работать локально с помощью shinyproxy, используя
container-volumes: ["/Users:/app_data"]
в application.yml. Это монтирует файловую систему пользователей хоста (/ Users) в контейнер (/ app_data). Однако, когда я развертываю приложение на удаленном сервере, я больше не могу подключаться к файловой системе хоста. Я бы хотел, чтобы пользователь имел возможность сохранять в своей файловой системе. Это возможно? Я безуспешно пробовал альтернативы / Users, например $ {HOME}.
Спасибо.
да, вы можете сделать это с помощью синтаксиса вроде:
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
Думаю, что теперь на ваш вопрос дан ответ, поэтому закрываю этот вопрос. Как всегда, не стесняйтесь открывать новый выпуск, если у вас есть другие вопросы или проблемы.