如何使用 Plumber API 传输 PDF 文件?
How to transfer a PDF file using the Plumber API?
我有一个 API 函数,它接受输入,使用该输入获取必要的数据,调用 .rmd 文件,然后使用该 .rmd 文件在指定目录中生成 pdf 文件。
我需要 API 的剩余部分来获取新生成的 pdf 文件并通过 HTTP 将其发布。但是,每当我尝试这样做时,我最终都会得到一个损坏的文件作为输出。
这是我当前的代码:
#* @serializer contentType list(type="application/pdf")
#* parameter_selection
#* @param a1
#* @get /pdf
function( a1) {
#Please assume that the filename location is correct.
filename = paste0( a1, '_','report','.pdf', sepp='')
locale_filename = paste0('notebooks/',filename, sepp= '')
readBin(locale_filename, "raw", n=file.info(locale_filename)$size)
}
谢谢。
是这样的:
#* @serializer contentType list(type="application/pdf")
#* parameter_selection
#* @param a1
#* @get /pdf
function( a1, res) {
#Please assume that the filename location is correct.
filename = paste0( a1, '_','report','.pdf', sepp='')
locale_filename = paste0('notebooks/',filename, sepp= '')
tmp <- tempfile()
res$setHeader("Content-Disposition", paste0("attachment; filename=", basename(locale_filename)))
tmp <- rmarkdown::render(file_location ,output_file = paste0(this_title, sepp=''), envir = new.env(parent = globalenv()))
readBin(locale_filename, "raw", n=file.info(locale_filename)$size)
}
我有一个 API 函数,它接受输入,使用该输入获取必要的数据,调用 .rmd 文件,然后使用该 .rmd 文件在指定目录中生成 pdf 文件。 我需要 API 的剩余部分来获取新生成的 pdf 文件并通过 HTTP 将其发布。但是,每当我尝试这样做时,我最终都会得到一个损坏的文件作为输出。
这是我当前的代码:
#* @serializer contentType list(type="application/pdf")
#* parameter_selection
#* @param a1
#* @get /pdf
function( a1) {
#Please assume that the filename location is correct.
filename = paste0( a1, '_','report','.pdf', sepp='')
locale_filename = paste0('notebooks/',filename, sepp= '')
readBin(locale_filename, "raw", n=file.info(locale_filename)$size)
}
谢谢。
是这样的:
#* @serializer contentType list(type="application/pdf")
#* parameter_selection
#* @param a1
#* @get /pdf
function( a1, res) {
#Please assume that the filename location is correct.
filename = paste0( a1, '_','report','.pdf', sepp='')
locale_filename = paste0('notebooks/',filename, sepp= '')
tmp <- tempfile()
res$setHeader("Content-Disposition", paste0("attachment; filename=", basename(locale_filename)))
tmp <- rmarkdown::render(file_location ,output_file = paste0(this_title, sepp=''), envir = new.env(parent = globalenv()))
readBin(locale_filename, "raw", n=file.info(locale_filename)$size)
}