2016-03-22 1 views
2

ユーザーがファイルをアップロードして指定のフォルダに保存するプログラムをShinyで作成しています。これを行う方法はthis question's answerから取られます。Shiny fileInputがファイル名を保持しない

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") 
     }) 
    }) 
) 

これを実行すると、ファイルが指定されたフォルダに保存されるときにそのファイル名が削除されていることがわかります。フォルダ内のファイルを読み取るプログラムでは、ファイル名をそのまま残す必要があります。どうすればそれを達成できますか?

+0

例を挙げてください。元の名前は何でしたか、剥奪された名前は何ですか? –

+1

これは文字通り任意の名前で、 '0'に取り除かれます –

答えて

3

変更file.copyライン

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

Dropboxのファイルを 'drop_upload'のように指定することはできますか?それともコンピュータのFielsだけをコピーできますか? –

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) 
    } 
    }) 

}) 
関連する問題