首页 > 解决方案 > 从浏览器获取下载目录

问题描述

我有这个shiny应用程序,我想通过按钮下载文件。所以我可以通过调用downloadHandler类似来做到这一点:

output$downloadData <- downloadHandler(
      filename = "plot1.png",

   content = function(file) {
      plotPNG(func = function(){
            plot(some.Data)
         },
         filename = file,
         width = 3000,
         height = 2000,
         res = 300
      )
   }
)

在这里,文件被下载到默认下载目录中。现在如果我想下载到另一个目录怎么办?换句话说:有没有办法确定默认下载目录并对其进行操作?

标签: rbrowsershiny

解决方案


downloadHandler() 应该能够处理这个问题。文件名参数是“文件名的字符串,包括扩展名,用户的网络浏览器在下载文件时应该默认使用它。”因此我们可以通过在文件名中定义路径来操作默认目录。

server<-function(input,output){

output$downloadData <- downloadHandler(

# Sets filename the browser should default too
filename = function() {
  paste(PATH_TO_DIR,"plot1",".png/xls/etc.",sep="") 
}, # Closes Filename Function

# Creates Download file
content = function(file) {
  plotPNG(func = function(){
        plot(some.Data)
     },
     file = filename(),
     width = 3000,
     height = 2000,
     res = 300
  )
}

ui<-
downloadButton("downloadData", 'Download File')
)

这可以与下载按钮在合作中使用,并且可以在按下按钮时通过使用变量定义路径来动态生成文件名和路径。我认为这可能会打开一个文件浏览器,我不知道这是否可以避免。

另请注意,文件名、路径和内容类型在本地会话 (RStudio) 中似乎不起作用,它们仅在部署到浏览器中后才起作用。


推荐阅读