R Dropbox文件下载

时间:2013-07-09 16:48:59

标签: r dropbox

我有一个分享给我下载的保管箱链接,但与其他链接不同,它说我禁止下载。

我的职能:

source_DropboxData <- function(file, key, sha1 = NULL, sep = ",", header = TRUE){
  URL <- paste0('https://dl.dropboxusercontent.com/s/', 
            key, '/', file)

  stopifnot(is.character(URL), length(URL) == 1)

  temp_file <- tempfile()
  on.exit(unlink(temp_file))

  request <- GET(URL)
  stop_for_status(request)
  writeBin(content(request, type = "raw"), temp_file)

  file_sha1 <- digest(file = temp_file, algo = "sha1")

  if (is.null(sha1)) {
    message("SHA-1 hash of file is ", file_sha1)
  }
  else {
    if (!identical(file_sha1, sha1)) {
      stop("SHA-1 hash of downloaded file (", file_sha1, 
       ")\n  does not match expected value (", sha1, 
           ")", call. = FALSE)
    }
  }

  read.table(temp_file, sep = sep, header = header)
}    

我的链接如下:

https://www.dropbox.com/sh/od6ymc4wu8uht5e/IxPX-EOhNx/a%b%x  #fake, for demonstration

正式的看起来像这样:

http://dl.dropbox.com/s/c18lcwnnrodsevt/test_dropbox_source.R

我的问题是两个链接之间的区别是一个安全且无法下载而另一个是可能的吗?我的印象是,repmis的功能可以同时执行私有和公共文件。

由于

1 个答案:

答案 0 :(得分:0)

这里的关键是

  1. 通过将?raw=1附加到网址
  2. 告诉dropbox提供原始文件
  3. 由于dropbox使用https,您(目前至少)需要打开连接(足够智能以使用安全传输)并将此连接提供给文件读取或加载功能(而不仅仅是原始URL字符串)
  4. 这是使用load.rda文件的示例,但同样适用于read.csv等。

    myURL = "https://www.dropbox.com/s/randomIDstring/YourFilename.rda?raw=1"
    myConnection = url(myURL)
    print(load(myConnection))
    close(myConnection) # good practice to close connection opened by url()