如何从Dropbox(https :)位置下载.xlsx文件

时间:2014-05-08 21:42:23

标签: r excel dropbox

我试图采用可重复研究范例,但会遇到喜欢查看Excel而不是文本数据文件的人,使用Dropbox托管Excel文件,然后我可以使用.xlsx软件包访问这些文件。

就像下载和解压缩压缩文件一样,我假设以下内容会起作用:

# Prerequisites
require("xlsx")
require("ggplot2")
require("repmis")
require("devtools")
require("RCurl") 
# Downloading data from Dropbox location


link <- paste0(
    "https://www.dropbox.com/s/",
    "{THE SHA-1 KEY}",
    "{THE FILE NAME}"
)

url <- getURL(link)

temp <- tempfile()
download.file(url, temp)

但是,我得到Error in download.file(url, temp) : unsupported URL scheme

是否有替代download.file接受此URL方案? 谢谢, 乔恩

2 个答案:

答案 0 :(得分:0)

您的网址错误 - 您正在使用的网址只会转到目标网页。我认为实际的下载URL是不同的,我设法使用下面的工作。

我实际上认为你不需要使用RCurl或getURL()函数,我认为你在之前的公式中遗漏了一些相对重要的/

尝试以下方法:

link <- paste("https://dl.dropboxusercontent.com/s",
              "{THE SHA-1 KEY}",
              "{THE FILE NAME}",
               sep="/")

download.file(url=link,destfile="your.destination.xlsx")
closeAllConnections()

答案 1 :(得分:0)

更新:

我刚刚意识到repmis package中有一个source_XlsxData函数,理论上应该完美地完成这项工作。

此外,下面的功能在某些时候有效,但在其他时候没有,并且似乎卡在GET线上。因此,非常欢迎更好的解决方案。


我决定退后一步,弄清楚如何从安全(https)网址下载原始文件。我在devtools中修改了(butchered?)source_url函数以生成以下内容:

download_file_url <- function (

   url, 
   outfile,
   ..., sha1 = NULL) 
{
    require(RCurl)
    require(devtools)
    require(repmis)
    require(httr)
    require(digest)

    stopifnot(is.character(url), length(url) == 1)
    filetag <- file(outfile, "wb")
    request <- GET(url)
    stop_for_status(request)
    writeBin(content(request, type = "raw"), filetag)
    close(filetag)
}

这似乎适用于生成本地版本的二进制文件 - 包括Excel。更好,更整洁,更聪明的改进,感激不尽。