【发布时间】:2017-01-13 08:11:58
【问题描述】:
假设我在闪亮服务器上的文件夹(D:\shiny)中生成了一些(多个)结果文件(csv、xls、txt 等),我该怎么做 下载(复制)到客户端计算机? 我的意思是下载文件而不是会话中的数据。 我从网上搜索过,大部分解决方案都是读取文件然后写入客户端,是否可以一一复制到本地客户端,并保留文件名? 或提供下载链接(要下载的文件的位置)以供下载? shinyFiles 可以做这样的事情吗?
【问题讨论】:
假设我在闪亮服务器上的文件夹(D:\shiny)中生成了一些(多个)结果文件(csv、xls、txt 等),我该怎么做 下载(复制)到客户端计算机? 我的意思是下载文件而不是会话中的数据。 我从网上搜索过,大部分解决方案都是读取文件然后写入客户端,是否可以一一复制到本地客户端,并保留文件名? 或提供下载链接(要下载的文件的位置)以供下载? shinyFiles 可以做这样的事情吗?
【问题讨论】:
我通常将所有文件放在一个 zip 文件夹中,该文件夹会在用户按下下载按钮时创建:
output$DownloadZip <- downloadHandler(
filename = function(){
paste("Results","zip",sep=".")
},
content = function(con){
tmpdir <- tempdir()
setwd(tempdir())
filesToSave <- c() #List to hold paths to your files in shiny
#Put all file paths inside filesToSave...
zip(zipfile=con, files = filesToSave)
},
contentType = "application/zip"
)
您需要为 Windows 7 及更低版本安装 RTools(从命令行压缩)。
【讨论】:
您可以将结果数据文件存储在闪亮服务器上的 http 可访问文件夹中,并在闪亮应用中提供指向该文件的简单下载链接。
【讨论】: