【发布时间】:2019-03-21 17:10:19
【问题描述】:
我制作了一个管道工 API,如下所示:
#* @serializer contentType list(type="application/vnd.openxmlformats-officedocument.wordprocessingml.document")
#* @get /word
function(team){
tmp <- tempfile()
render("test.Rmd", tmp, output_format = "word_document",
params = list(team = team))
readBin(tmp, "raw", n=file.info(tmp)$size)
}
在本地运行它在 Windows 上运行良好,生成一个 docx 文件供下载。如果您在 Linux 上本地运行它并使用 Firefox,它似乎也可以正常工作,尽管它似乎在尝试打开或下载 docx 文件时使 Firefox 崩溃。
但在 Linux 上本地运行并通过 Chrome 下载会产生操作系统无法识别的二进制文件。如果您选择“打开方式... Libre Office Writer”,则文件可以正常打开,但我确实需要我的用户获取格式正确的文件,该文件将自动打开。
我不知道问题出在浏览器还是操作系统上。任何帮助表示赞赏。
所有代码都在这个存储库中,正如我所说的,它们在 Windows 中都可以正常工作,所以我实际上认为它对其他人来说是一个有用的参考,但现在我无法让它在 Linux 上工作-@ 987654321@
【问题讨论】:
-
这听起来像是浏览器的问题。如果 浏览器 不能处理文件类型,它就不能显示它。无论如何,
docx是一个包含 XML 文件的 zip 包。您可以解压缩文件以检查它,看看它是否在所有操作系统中都包含相同的文件。 -
您可能应该强制浏览器下载文件,而不是通过将
Content-Disposition标头设置为attachment来尝试内联显示它,例如使用team$setHeader("Content-Disposition", "attachment; filename=myFile.docx") -
谢谢,不过我不确定如何使该命令正常工作。它可以与水管工一起使用吗?它来自一个包裹吗?
-
这是添加标题的管道工调用。已复制from the plumber tutorials
-
你是个天才!我不知道为什么我昨天没有找到那个页面,我找了几个小时。非常感谢!我要把正确的代码变成答案。