r - 有谁知道如何通过托管的 Shiny 应用程序与位于 Dropbox 上的 .xlsx 文件进行交互?
问题描述
我为我的工作制作了一个相对复杂的 Shiny 应用程序,在本地运行良好。但是,我正在尝试托管该应用程序,以便没有下载 R Studio 的用户可以访问它。我无法让应用程序通过 shinyapps.io 运行。这似乎主要与它无法找到位于 Dropbox 上的文件有关。该应用程序几乎完全基于在 Dropbox 上加载和写入文件。我尝试更改文件路径并使用 rdrop2 加载文件,但它会更改某些内容的格式,并且据我所知,协调起来会非常复杂。我是一个新手程序员,不得不重组整个应用程序的想法让我有点焦虑,而且肯定需要相当多的努力。有谁知道更“简单”的 通过 Shinyapps.io 上托管的闪亮应用程序修改位于 Dropbox 上的文件的方法,最好同时仍然能够使用“openxlsx”包?非常感谢您提前。
我认为可能有效的一种解决方法是使 Dropbox 文件的文件路径特定于用户,因为使用该应用程序的任何人都应该有权访问 Dropbox:
this.data <- as.data.frame(read.xlsx(paste("C:\Users\", Sys.info()[["user"]], "\Dropbox\rest of the file path", sep = "")))
解决方案
免责声明:我不建议依靠谷歌未提交的 URL 来保证隐私。
修改从 DropBox 复制的共享链接替换dl=0
为dl=1
以使下载开始而不是显示在 DropBox UI 中。
然后你可以在它之前download.file()
进入一个:tempfile()
read.xlsx()
library(shiny)
library(openxlsx)
library(DT)
ui <- fluidPage(
titlePanel("XL Read from dropbox"),
mainPanel( DTOutput("dt"))
)
server <- function(input, output) {
tmpfile <- tempfile(fileext='.xlsx')
download.file(url = "https://www.dropbox.com/s/1v0l...5u803a9hg/my_file.xlsx?dl=1", destfile = tmpfile , mode="wb")
output$dt <- renderDT(read.xlsx(outfile))
}
shinyApp(ui = ui, server = server)
推荐阅读
- c - 如何访问矩形矩阵中的每一行和每一列
- tinymce - tinymce 5 和 n1ed - 保存到数据库后,它还包含文本“[removed][removed]”
- time - 仅上周值松脚本
- python - Pandas,列出每行具有空值的所有列
- android - java.lang.IllegalStateException:无法在 OnPostExecute ( ) 方法中压缩回收的位图
- html - 如何将渲染的模板显示为原始源代码块?
- node.js - MongoDB全文搜索,获取原生mongo驱动Mikro ORM
- javascript - 活动切换开关以更改定价
- java - 如何在没有 maven 的情况下使用 Junit5
- java - Why memory usage is less than Xms?