R 从web应用程序将csv或xslx文件写入光盘

R 从web应用程序将csv或xslx文件写入光盘,r,file,shiny,R,File,Shiny,我有一个闪亮的web应用程序,我正在制作一个像这样的上传表单 UI组件: fileInput( 'file1', 'Choose file to upload', accept = c( 'text/csv', 'text/xlsx', '.csv', '.xlsx' )), mainPanel( tableOutput("contents") ) )) output$contents <- ren

我有一个闪亮的web应用程序,我正在制作一个像这样的上传表单

UI组件:

  fileInput(
  'file1', 'Choose file to upload',
   accept = c(
     'text/csv',
     'text/xlsx',
     '.csv',
     '.xlsx'
     )),   
  mainPanel(
  tableOutput("contents")
  )
  ))
  output$contents <- renderTable({
    inFile <- input$file1
    #Check if file is null
    if(is.null(inFile)){
      return(NULL)
    } 

    #Check if file extension is .xlsx 
    if(grepl(".xlsx", inFile$name)){
    write.xlsx(inFile$datapath, file="testexcelfile",
               sheetName="Test file", append=FALSE)
    data <- read.xlsx(inFile$datapath)
    return(data)

    #or if file extension is .csv
    }else if(grepl(".csv", inFile$name)){
      write.csv2(inFile, file="TestCsv.csv")
      data <- read.csv(inFile$datapath)
      return(data)
    }
    else{
      return("Please enter a file with format .xlsx or .csv")
    }
  })
})
服务器组件:

  fileInput(
  'file1', 'Choose file to upload',
   accept = c(
     'text/csv',
     'text/xlsx',
     '.csv',
     '.xlsx'
     )),   
  mainPanel(
  tableOutput("contents")
  )
  ))
  output$contents <- renderTable({
    inFile <- input$file1
    #Check if file is null
    if(is.null(inFile)){
      return(NULL)
    } 

    #Check if file extension is .xlsx 
    if(grepl(".xlsx", inFile$name)){
    write.xlsx(inFile$datapath, file="testexcelfile",
               sheetName="Test file", append=FALSE)
    data <- read.xlsx(inFile$datapath)
    return(data)

    #or if file extension is .csv
    }else if(grepl(".csv", inFile$name)){
      write.csv2(inFile, file="TestCsv.csv")
      data <- read.csv(inFile$datapath)
      return(data)
    }
    else{
      return("Please enter a file with format .xlsx or .csv")
    }
  })
})
问题是,内容没有正确写入文件,而是将类型列表的ile属性写入,如图所示

有人熟悉我如何编写文件的原始内容而不是属性吗


因为您已经知道临时文件路径。您可以使用file.copy将文件从临时路径复制到目标


请注意,如果在shinyapps.io上部署应用程序,则无法将文件永久写入本地存储。

如果要将文件保存到服务器上,是否可以通过重命名服务器上的文件来使用此方法是。只要不使用shinyapps.io,就可以将文件保存在服务器上。