将在 textAreaInput 中创建的文本发送到 Google 云存储
Send a text create in textAreaInput to the Google Cloud Storage
在使用 googleCloudStorageR
包使用 *json 文件进行身份验证后,我尝试在 textAreaInput
中写入文本并作为 *txt 发送到我的 Google Cloud Storage 存储桶没有成功。输出总是:
Listening on http://127.0.0.1:3842
Auto-refreshing stale OAuth token.
Warning: Error in : Path 'NA' does not exist
[No stack trace available]
没有我的证书的例子:
# Packages
require(rgdal)
require(shiny)
require(shinythemes)
require(googleCloudStorageR)
# Create the shiny dash
ui <- fluidPage(
theme = shinytheme("cosmo"),
titlePanel(title="My Map Dashboard"),
sidebarLayout(
sidebarPanel(
textAreaInput("text_input","Selected data"),
actionButton("sendMSG", "Send to server")
),
mainPanel(
textOutput("sendMSG")
)
)
)
server <- function(input, output){
MyMSG <- reactive({
output$text_output <- renderText({input$text_input})
})
# Read text write in the box and send to the server
observeEvent(input$sendMSG, {
filename = function() {
paste0("MyText",Sys.Date(),".txt",sep="")
}
content = function(file) {
write.table(MyMSG(), file, row.names = F)
}
# Send output to Google Cloud Storage
gcs_get_bucket("forestcloud")
# *txt files
all_txt_est <- list.files(pattern="\.txt$", full.names=TRUE)
for(f in 1:length(all_txt_est)){
all_txt_est_name<-all_txt_est[f]
gcs_upload(all_txt_est_name, name=all_txt_est_name)
}
###
})
}
shinyApp(ui, server)
##
请问有什么解决办法吗?
可能all_txt_est
是空的。您不在观察者中执行 write.table
函数,您只是定义一个执行 write.table
的函数,但您不使用此函数。
不要在 reactive
导体内定义 output
槽,那没有意义。
也许以下就是您想要的。我不知道 Google 云存储,所以我不确定关于这一点的代码是否正确。
server <- function(input, output){
output$sendMSG <- renderText({input$text_input}) # you can do that but this will render the same as the textAreaInput
observeEvent(input$sendMSG, {
filePath <- tempfile(fileext = ".txt")
writeLines(input$text_input, filePath)
# Send output to Google Cloud Storage
gcs_get_bucket("forestcloud")
gcs_upload(filePath, name = filePath)
})
}
在使用 googleCloudStorageR
包使用 *json 文件进行身份验证后,我尝试在 textAreaInput
中写入文本并作为 *txt 发送到我的 Google Cloud Storage 存储桶没有成功。输出总是:
Listening on http://127.0.0.1:3842
Auto-refreshing stale OAuth token.
Warning: Error in : Path 'NA' does not exist
[No stack trace available]
没有我的证书的例子:
# Packages
require(rgdal)
require(shiny)
require(shinythemes)
require(googleCloudStorageR)
# Create the shiny dash
ui <- fluidPage(
theme = shinytheme("cosmo"),
titlePanel(title="My Map Dashboard"),
sidebarLayout(
sidebarPanel(
textAreaInput("text_input","Selected data"),
actionButton("sendMSG", "Send to server")
),
mainPanel(
textOutput("sendMSG")
)
)
)
server <- function(input, output){
MyMSG <- reactive({
output$text_output <- renderText({input$text_input})
})
# Read text write in the box and send to the server
observeEvent(input$sendMSG, {
filename = function() {
paste0("MyText",Sys.Date(),".txt",sep="")
}
content = function(file) {
write.table(MyMSG(), file, row.names = F)
}
# Send output to Google Cloud Storage
gcs_get_bucket("forestcloud")
# *txt files
all_txt_est <- list.files(pattern="\.txt$", full.names=TRUE)
for(f in 1:length(all_txt_est)){
all_txt_est_name<-all_txt_est[f]
gcs_upload(all_txt_est_name, name=all_txt_est_name)
}
###
})
}
shinyApp(ui, server)
##
请问有什么解决办法吗?
可能all_txt_est
是空的。您不在观察者中执行 write.table
函数,您只是定义一个执行 write.table
的函数,但您不使用此函数。
不要在 reactive
导体内定义 output
槽,那没有意义。
也许以下就是您想要的。我不知道 Google 云存储,所以我不确定关于这一点的代码是否正确。
server <- function(input, output){
output$sendMSG <- renderText({input$text_input}) # you can do that but this will render the same as the textAreaInput
observeEvent(input$sendMSG, {
filePath <- tempfile(fileext = ".txt")
writeLines(input$text_input, filePath)
# Send output to Google Cloud Storage
gcs_get_bucket("forestcloud")
gcs_upload(filePath, name = filePath)
})
}