【问题标题】:How to use Plumber in an API to upload multiple images to a sub directory?如何在 API 中使用 Plumber 将多个图像上传到子目录?
【发布时间】:2021-06-02 17:45:24
【问题描述】:

我有一个位置为“data/images/”的子目录,我需要我的 API 服务将图像上传到该子目录。我在这里使用 R 和 Plumber。我了解基本设置,但我似乎无法让我的代码将我上传的文件传送到我的目录中。

这是我的尝试:

图书馆(水管工) 图书馆(车)

#* Upload file
#* @param req:[file]
#* @post /uploadfile
function(req, res){
  
  names(req) 

  print(names(req))

  fileInfo <- list(formContents = Rook::Multipart$parse(req))

  print(fileInfo)

  ## The file is downloaded in a temporary folder
  tmpfile <- fileInfo$formContents$upload$tempfile

  ## Copy the file to a new folder, with its original name
  fn <- file.path(paste0("data/images/",req, sepp=''))
  file.copy(tmpfile, fn)
  print(fn)



  ## Send a message with the location of the file
  res$body <- paste0("Your file is now stored in ", fn, "\n")
  res
}

任何帮助将不胜感激。

【问题讨论】:

  • print(fn) 上打印什么?在list.files(fn) 上?
  • 我认为代码不会到达那里。当我尝试上传文件时出现此错误:

标签: r image api plumber


【解决方案1】:

所以在扯了一堆毛之后,这实质上是让你可以将图片上传到指定子目录的代码。此代码需要管道工和 Rook 包才能工作:

library(plumber)
library(Rook)

#* @param req:[file]
#* @post /upload_test27

function(req, res) {

  # Required for multiple file uploads
  names(req)

  # Parses into a Rook multipart file type;needed for API conversions
  fileInfo <- list(formContents = Rook::Multipart$parse(req))

  # This is where the file name is stored
  # print(fileInfo$formContents$req$filename)
  file_name <- fileInfo$formContents$req$filename

  # The file is downloaded in a temporary folder
  tmpfile <- fileInfo$formContents$req$tempfile



  # Create a file path
  fn <- (paste0("data/images/",file_name, sepp=''))


  #Copies the file into the designated folder
  file.copy(tmpfile, fn)


  res$body <- paste0("Your file is now stored in ", fn, "\n")
  res



}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 2019-07-31
    • 2021-12-07
    • 2018-11-19
    • 2016-01-11
    • 1970-01-01
    • 2018-07-03
    相关资源
    最近更新 更多