使用 plumber 提供可下载的文件

Serve downloadable files with plumber

如何设置我的管道工 API 以便它提供可下载的文件?

例如,我想直接传递一个 rdsRData 对象,而不是将其序列化为 JSON.

使用正确的序列化程序很重要:

# If the URL gets called the browser will automatically download the file.
#' @serializer contentType list(type="application/octet-stream")
#' @get /rds
rest_rds = function() {
  tfile = tempfile()
  saveRDS(iris, file = tfile)
  readBin(tfile, "raw", n = file.info(tfile)$size)
}

提供这个管道工脚本后,您可以下载这个对象并将其导入到单独的 R 会话中,如下所示:

tfile = tempfile()
download.file("http://127.0.0.1:7983/rds", destfile = tfile)
d_iris = readRDS(tfile)