使用unzip()解压缩R Shiny中的文件会在部署时失败

时间:2015-10-19 22:47:52

标签: r shiny unzip

我想在我闪亮的应用的www文件夹中解压缩压缩的.mdb文件,查询数据,然后将其删除。 Unzip()适用于我的本地计算机,但是当我在shinyapps.io部署应用程序时,解压缩文件时出现问题。因为我无法read.table()生成的文件(它是.mdb),我认为unz()不起作用。

此代码在本地计算机上运行时可以正常运行

服务器:

require(shiny)    

shinyServer(function(input, output) {

   observeEvent(input$run,{ #Run Button

     dbName=unzip('www/test.zip', list=T)
     output$name=renderText({
        paste(dbName[1])
     })

     db=unzip('www/ttt.zip', exdir='www', unzip=getOption("unzip"))
     test1=read.csv(db) #.csv for simplicity, but my problem uses a .mdb
     file.remove(db)

     output$testcount=renderText({
        paste(sum(test1))
     })

  })#/Run Button  
})#/SS

UI:

shinyUI(
  sidebarLayout(
      sidebarPanel(width=3,

           h5('ZIP test'),                                           
           p(align="left", 
              shiny::actionButton("run", label = "Run!")
           ),                                           
           textOutput(outputId = "name"),
           textOutput(outputId = "testcount")                                           
      ),

      mainPanel(width=9,
           plotOutput(outputId = "probs",height = "550px")
      )                              
  )
)

但上传到Shinyapps.io时失败了。

知道我在这里做错了什么吗?我已经尝试直接传递文件路径,并且弄乱了unzip=选项,但无济于事。如果我删除了第二个电话,它会告诉我这个名字很好,但如果我试图解压缩该文件,它会中断。

感谢任何帮助!

修改

我能够通过删除exdir='www', unzip=getOption("unzip")并在根目录中查找文件来使其工作:test1=read.csv('file1.csv')

1 个答案:

答案 0 :(得分:1)

我在shiny-server上使用unzip(),每次调用该函数时,.zip的内容都会保存在应用程序的根目录中。我认为这是shinyapps.io的一个问题。

在文档中,您只能根据我阅读的内容指定文件所在位置'exdir'。