我构建了一个小应用来测试我是否可以在应用中上传文件并将上传的文件保存到Dropbox中。它在我当地的Rstudio中运行良好,但是当我将它部署到shinyapps.io时,我在上传文件后立即“断开了与服务器的连接”。我在Mac OX环境中,以下是我的代码:
ui.R:
library(shiny)
library(rdrop2)
ui=shinyUI(bootstrapPage(
fileInput("upload", "Upload", multiple = FALSE)
))
server.R:
library(shiny)
library(rdrop2)
outputDir <- "test"
shinyServer(function(input, output, session) {
token <- readRDS("droptoken.rds")
drop_acc(dtoken = token)
dataInput <- reactive({
file1 <- input$upload
clientData <- read.csv(file1$datapath, header=TRUE)
clientData
})
GetUserName <- function() {
x <- Sys.info()[["user"]]
if (is.null(x) | x == "") {
Sys.getenv("USERNAME")
} else {
Sys.getenv("LOGNAME")
}
if (identical(x, "unknown")) {
warning("unknown returned")
}
return(x)
}
observeEvent(input$upload, {
saveData(dataInput())
})
saveData <- function(data) {
fileName <- sprintf("%s_%s_%s.csv", GetUserName(), as.integer(Sys.time()), digest::digest(data))
filePath <- file.path(tempdir(), fileName)
write.csv(data, filePath, row.names = TRUE, quote = TRUE)
drop_upload(filePath, dest = outputDir)
}
})
有人可以帮我这个吗?谢谢!
答案 0 :(得分:0)
而不是: -
fileName <- sprintf("%s_%s_%s.csv", GetUserName(), as.integer(Sys.time()), digest::digest(data))
filePath <- file.path(tempdir(), fileName)
write.csv(data, filePath, row.names = TRUE, quote = TRUE)
drop_upload(filePath, dest = outputDir)
试试这个: -
fileName <- sprintf("%s_%s_%s.csv", GetUserName(), as.integer(Sys.time()),
write.csv(data, fileName, row.names = TRUE, quote = TRUE)
token <- readRDS("droptoken.rds")
drop_acc(dtoken = token)
drop_upload(fileName, dest = outputDir,dtoken=token)
它对我有用。 注意:将令牌保存在.rds文件中,并在本地计算机上执行一次。发布到闪亮服务器时,请不要在代码中包含以下代码。
#token<-drop_auth()
#saveRDS(token, "droptoken.rds")