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

如何从dropbox(https:)位置下载.xlsx文件,r,excel,dropbox,R,Excel,Dropbox,我正试图采用可复制的研究范式,但也遇到了喜欢中途查看Excel而不是文本数据文件的人,使用Dropbox托管Excel文件,然后我可以使用.xlsx包访问这些文件 与下载和解压压缩文件类似,我假设以下内容也可以: # Prerequisites require("xlsx") require("ggplot2") require("repmis") require("devtools") require("RCurl") # Downloading data from Dropbox loca

我正试图采用可复制的研究范式,但也遇到了喜欢中途查看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)
但是,我在download.fileurl中遇到错误,temp:不支持的URL方案

是否有可接受此URL方案的download.file替代方案? 谢谢
Jon

您的URL错误-您正在使用的URL刚好进入登录页。我认为实际的下载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()
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)
}
更新: 我刚刚意识到中有一个源函数,理论上应该可以完美地完成这项工作

此外,下面的函数在某些时候可以工作,但在其他时候不能工作,并且似乎卡在get行上。因此,一个更好的解决方案将是非常受欢迎的

我决定试着退一步,找出如何从安全的https url下载原始文件。我被杀了?在devtools中使用source_url函数生成以下内容:

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

download.file(url=link,destfile="your.destination.xlsx")
closeAllConnections()
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。这方面的更好、更整洁、更聪明的改进受到了感激。

我不熟悉DropBox如何处理这类特殊问题;问题是您没有进行身份验证,还是由于某种原因,RCurl在您的URL上呕吐?您将使用的链接是否公开?另外……您是否检查过getURL在这种情况下是否实际工作,或者是否遇到证书问题?默认情况下,curl不知道在哪里查找证书,因此将拒绝。您可以关闭CA验证,或将其指向证书。类似的最新问题:。请尝试使用方法参数的默认值以外的其他方法下载.file。您还可以使用选项download.file.method=curl来设置该方法,以有效地更改默认值。如果没有method=curl或method=wget,这可能在非Windows平台上不起作用,因为?download.file说,请注意,内部方法不支持https://URL。您好。谢谢。SHA和文件名部分仅用于说明,以避免广播SHA-1键。“/”已就位。问题与以前完全一样:“不支持的URL方案”。我正在使用OSX,所以它可能在Windows上工作。我会在一周内知道我下一次什么时候可以使用它。