Shiny应用部署shinyapps.io后下载的Rmarkdown HTML报告无法渲染图片
问题解决方法
问题根源
rmarkdown渲染报告时默认使用临时目录作为工作目录,你仅向Rmd传递了图片的相对路径,渲染时无法从临时目录定位到shiny应用根目录下的图片文件;同时here包的根目录判定逻辑在shinyapps.io的运行环境和本地开发环境不一致,进一步导致路径解析错误。
你之前复制文件到www目录的逻辑仅用于适配shiny前端的资源查找规则,和后端Rmd渲染的路径逻辑无关,所以会出现前端图片正常显示、但报告生成失败的情况。
修复方案
该方案同时兼容本地运行和shinyapps.io部署环境,不需要额外做两套配置:
- 第一步:在shiny应用中提前获取图片的绝对路径,再传递给Rmd参数
在app.R中读取到pca文件名后,新增一行代码获取绝对路径:
pca <- list.files(pattern="*pca_check.png") # 新增以下行,获取图片的绝对路径 pca_abs <- normalizePath(pca[[1]], mustWork = TRUE)
修改downloadHandler中的参数传递逻辑,将绝对路径传给Rmd:
params <- list(pca = pca_abs)
- 第二步:简化Rmd中的图片引用逻辑
修改report.Rmd中的图片引用代码,不需要再调用here包,直接使用传入的绝对路径即可:
```{r out.width="70%"} knitr::include_graphics(params$pca)
--- 内容的提问来源于stack exchange,提问作者lecb
相关产品推荐
相关产品推荐

