R 从web应用程序将csv或xslx文件写入光盘
我有一个闪亮的web应用程序,我正在制作一个像这样的上传表单 UI组件: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
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,就可以将文件保存在服务器上。