2017-06-09 59 views
0

在我自己的計算機上編寫應用程序時,getVolumes()執行我想要的操作:在計算機的根目錄下啓動shinyDirChoose。這允許瀏覽到我的電腦上的任何文件夾。r shiny - 在服務器上的應用程序中獲取dirGetter和shinyDirChoose的用戶計算機卷

然而,上傳到shinyapps.io後,我得到了服務器的卷。

即使從服務器運行應用程序,我仍然可以獲取本地用戶卷而不是服務器的卷嗎?如果不行,可能是C:驅動器?

volumes <- getVolumes() 
shinyDirChoose(input, 'directory', roots=volumes, session=session) 
+0

據我所知,你不能。 shinyFiles用於查看服務器端文件系統。在你的機器上運行時考慮它的服務器。 – Phi

+0

感謝@Phi的回覆。那麼瀏覽你的電腦上傳個人文件到服務器是無法實現的?這真是太遺憾了...... –

+0

沒有說你不能。說你不能使用shinyFiles。看看Shiny – Phi

回答

0

This Works!非常感謝@Phi。

library(shiny) 

    ui = navbarPage(HTML("Title"), 
    tabPanel(HTML("<font size=3>Start</font>"), 
      sidebarPanel(width = 2, 
          fileInput('files', 'UPLOAD ManderMatcher EXPORT', multiple = TRUE, accept = c('text/csv','text/comma-separated-values','text/tab-separated-values','text/plain','.csv','.tsv')), 
          checkboxInput('header', 'Header', TRUE), 
          radioButtons('sep', 'Separator', c(Comma=',',Semicolon=';',Tab='\t'), selected=';'), 
          radioButtons('quote', 'Quote', c(None='','Double Quote'='"','Single Quote'="'"), selected='"'), 
          actionButton("Load", "APPLY DATA") 
      ), 
      mainPanel(
       tabsetPanel(
       tabPanel("StaVst", 
          fluidRow(column(6, dataTableOutput("tabel1")) 
         )), 
       tabPanel("TabFsmSgh", 
          fluidRow(column(6, dataTableOutput("tabel2")) 
         )), 
       tabPanel("TabFsmVst", 
          fluidRow(column(6, dataTableOutput("tabel3")) 
         )) 
       ) 
      ) 
      ) 
    ) 
    server = function(input, output, session) { 
    lst1 <- eventReactive(input$files, { 
     req(input$Load!=0) 
     lst <- list() 
     for(i in 1:length(input$files[,1])){ 
     lst[[i]] <- read.csv(input$files[[i, 'datapath']], header = input$header, sep = input$sep, quote = input$quote, 
          stringsAsFactors =FALSE) 
     } 
     lst 
    }) 
    output$tabel1 <- renderDataTable({ 
     req(!is.null(input$files) & input$Load!=0) 
     lst1()[[1]] 
    }) 
    output$tabel2 <- renderDataTable({ 
     req(!is.null(input$files) & input$Load!=0) 
     lst1()[[2]] 
    }) 
    output$tabel3 <- renderDataTable({ 
     req(!is.null(input$files) & input$Load!=0) 
     lst1()[[3]] 
    }) 
    } 
    shinyApp(ui = ui, server = server, options = list(launch.browser=TRUE)) 
+0

如果有效,請您接受答案? – Phi

0

UI:

fluidRow(
     fileInput('file1', 'Choose CSV File',multiple = TRUE, 
       accept=c('text/csv', 
         'text/comma-separated-values,text/plain', 
         '.csv')) 
    ) 

服務器:

output$contents <- renderTable({ 
# input$file1 will be NULL initially. After the user selects 
# and uploads a file, it will be a data frame with 'name', 
# 'size', 'type', and 'datapath' columns. The 'datapath' 
# column will contain the local filenames where the data can 
# be found. 
inFile <- input$file1 

if (is.null(inFile)) 
    return(NULL) 

read.csv(inFile$datapath, header = input$header) 
}) 

這些都是直接從Rstudio幫助。我正在使用Linux機器,但我認爲這不應該有所作爲。

+0

我不得不承認我忽略了多個文件的論點。我會放棄它,謝謝! –

相關問題