2012-09-17 36 views
1

我试图在位于多个代理后面的远程服务器上的R中下载文件。有些东西 - 我无法弄清楚是什么 - 导致文件在我试图在服务器上访问时被返回缓存,无论是通过R还是通过Web浏览器访问它。download.file()在将随机后缀附加到文件名时失败

我试过在我的download.file调用中使用cacheOK=FALSE,这没有效果。

Is there a way to force browsers to refresh/download images?我已经尝试添加一个随机的后缀添加到URL的末尾:

download.file(url = paste("http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/F-F_Research_Data_Factors_daily.zip?", 
          format(Sys.time(), "%d%m%Y"),sep=""), 
       destfile = "F-F_Research_Data_Factors_daily.zip", cacheOK=FALSE) 

这就产生,例如,以下网址:

http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/F-F_Research_Data_Factors_daily.zip?17092012 

从Web浏览器访问时在远程服务器上,确实返回最新版本的文件。但是,如果在R中使用download.file进行访问,则会返回损坏的zip归档文件。 WinRAR和R的unzip函数都抱怨zip文件已损坏。

unzip("F-F_Research_Data_Factors_daily.zip") 
1: In unzip("F-F_Research_Data_Factors_daily.zip") : 
internal error in unz code 

我不明白为什么经由R个下载此文件将导致返回损坏的文件,而通过互联网浏览器下载它没有给出问题。

任何人都可以提出任何一种方式来击败由R(哪个我不希望)高速缓存,或一个原因,download.file不喜欢我的网址?someRandomString上涨到它的结束?

回答

2

如果使用mode="wb"

download.file(url = paste("http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/F-F_Research_Data_Factors_daily.zip?",format(Sys.time(),"%d%m%Y"),sep=""), 
      destfile = "F-F_Research_Data_Factors_daily.zip", mode='wb', cacheOK=FALSE) 
+0

完美,感谢 – Ina

+1

@Ina,[这里是一个博客]它将工作(http://timelyportfolio.blogspot.com/search/label/french)使用数据来自Kenneth French--可能会有助于了解他如何下载文件。 – GSee