问题描述
我有一个子目录,其位置为“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
}
任何帮助将不胜感激。
解决方法
所以在一堆拉毛之后,这本质上就是让你上传图片到指定子目录的代码。此代码需要管道工和 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
}