R Shiny: загрузить файл изображения и сохранить на сервер

#r #shiny

#r #блестящий

Вопрос:

Я пытаюсь загрузить изображение, а затем сохранить его в файловой системе сервера с помощью Shiny.

Для загрузки я нашел

 fileInput
  

который создает data.frame, содержащий детали изображения и путь к данным. Как тогда это можно использовать для сохранения на удаленном сервере?

Комментарии:

1. На стороне пользовательского интерфейса, когда вы указываете что-то вроде fileInput('file1', 'Choose CSV File', accept=c('text/csv', 'text/comma-separated-values,text/plain', '.csv')) , объектом input$file1 будет ваш файл на стороне сервера. Вы можете работать с этим файлом оттуда, сохранять его (например write() ) или отправлять на удаленный сервер через SFTP, облачные сервисы или что-то еще. Возможно, вы захотите прочитать это: shiny.rstudio.com/articles/persistent-data-storage.html — а вот пример загрузки: shiny.rstudio.com/gallery/file-upload.html

Ответ №1:

Вот простой пример. Он копирует только загруженный файл в местоположение at на сервере. Это на том же компьютере, но это может быть где угодно.

 library(shiny)

shinyApp(
  ui = shinyUI(  
    fluidRow( 
      fileInput("myFile", "Choose a file", accept = c('image/png', 'image/jpeg'))
    )
  ),
  server = shinyServer(function(input, output,session){
    observeEvent(input$myFile, {
      inFile <- input$myFile
      if (is.null(inFile))
        return()
      file.copy(inFile$datapath, file.path("c:/temp", inFile$name) )
    })
  })
)

shinyApp(ui, server)