闪亮的fileInput不保留文件名

时间:2016-03-22 01:06:28

标签: r file-upload upload shiny

我正在Shiny中编写一个程序,用户上传文件并保存到指定的文件夹。执行此操作的方法取自this question's answer

library(shiny)

shinyApp(
    ui=shinyUI(bootstrapPage(
       fileInput("upload", "Upload", multiple = FALSE)
    )),

    server=shinyServer(function(input, output, session){               
        observe({
            if (is.null(input$upload)) return()
            file.copy(input$upload$datapath, "/some/other/path")
        })
    })
)

当我执行此操作时,我发现文件在保存到指定文件夹时其文件名被剥离。读取文件夹中文件的程序要求保留文件名。我怎么能做到这一点?

2 个答案:

答案 0 :(得分:3)

将file.copy行更改为

file.copy(input$upload$datapath, paste0("your_folder/", input$upload$name))

答案 1 :(得分:0)

这很有效:在本地重命名文件,然后通过forloop上传它们,然后删除本地文件。这里有一些对我有用的代码:

observe({
  if(!is.null(input$file_support)){
    browser()
    files = file.rename(input$file_support$datapath, paste0(input$file_support$name))
    files = paste0(input$file_support$name)
    n_files = length(files)
    for(i in 1:n_files){
      drop_upload(files[i], dest = "drop_test")
    }
  file.remove(files)
  }
  })

})