通过RCurl从ftp下载压缩文件

时间:2014-03-14 17:26:20

标签: r

我从ftp服务器下载压缩文件时遇到问题。但是现在我已经解决了这个问题,因为我在这里找不到解决问题的方法,所以我分享了我的方法。 首先我用

尝试了
 download.file()

但问题是我的密码以" @"结尾。这就是为什么在URL中使用submittign用户和密码的解决方案不起作用的原因。双@显然令人困惑。

url <- ftp://user:password@@url

您将在下面找到解决方案。 也许某人有一些改进。

也许对于有用的人来说, 弗洛里安

2 个答案:

答案 0 :(得分:7)

这是我的解决方案:

library(RCurl)

url<- "ftp://adress/"
filenames <- getURL(url, userpwd="USER:PASSWORD", ftp.use.epsv = FALSE, dirlistonly = TRUE) #reading filenames from ftp-server
destnames <- filenames <-  strsplit(filenames, "\r*\n")[[1]] # destfiles = origin file names
con <-  getCurlHandle( ftp.use.epsv = FALSE, userpwd="USER:PASSWORD")
mapply(function(x,y) writeBin(getBinaryURL(x, curl = con, dirlistonly = FALSE), y), x = filenames, y = paste("C:\\temp\\",destnames, sep = "")) #writing all zipped files in one directory

希望对任何人都有用! 问候, 弗洛里安

答案 1 :(得分:2)

如果没有特别的理由继续使用Rcurl,则可以使用这种基于bash的方法:

   URL <- "ftp.server.ca"
   USR <- "aUserName"
   MDP <- "myPassword"
   OUT <- "output.file"
   cmd <- paste("wget -m --ftp-user=",USR," --ftp-password=",MDP, " ftp://", URL," -O ", OUT, sep="")
   system(cmd)